問題タブ [rasterize]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
87 参照

flutter - TextFieldカーソルの変更時に画面全体をフラッターで再描画してラスタライズする

画面の中央に TextField をレンダリングする非常に単純なフラッター アプリがあります。ウィジェット ツリーは次のとおりです: MaterialApp > Scaffold > Center > Padding> RepaintBoundary > TextField ここに画像の説明を入力

ここに画像の説明を入力

これはアプリが起動したばかりの画面です。すべて問題ありません。最初のレンダリングですべての境界線の表示を再描画します。 ここに画像の説明を入力

しかし、TextField をタップすると、キーボードが開き、画面全体が再描画され、1 つの奇妙なことが起こります。画面全体がラスター キャッシュ チェッカーボードで覆われていますか? ここに画像の説明を入力

そこから、カーソル位置を変更するか、TextField のテキストを変更するたびに、画面全体をカバーするラスター キャッシュ チェッカーボードが別の色に更新されます。TextField は再描画されます (これは正常です) が、画面全体も再描画されますが、これは奇妙です。TextField の境界線が再描画され、画面全体が新しい色に更新されていることがわかります。

ここに画像の説明を入力

テキストフィールドを更新するたびに、タイムラインで何が起こるかを次に示します。 ここに画像の説明を入力

私の質問は、TextField にフォーカスしたり、カーソル位置を更新したりすると、全体がラスター キャッシュされて再描画されたのはなぜですか?