Flutterのいくつかの知識概念のまとめ

フラッターをしばらく勉強した後、まだ書き留めて記録する予定の概念的なものがあります。

ウィジェット、要素、RenderObject

Widget、Element、RenderObject、各部分は対応する機能を担当することを誰もが知っています。Widgetを記述するだけでよいのはなぜですか。なぜElementとRenderObjectが必要なのですか。新しいオブジェクトは、Reuse Elementなどの元のオブジェクトを再利用でき、RenderObjectのコンテンツを変更するだけで済みます。これにより、パフォーマンスの損失を減らし、流暢さを向上させることができます。
ここに画像の説明を挿入

フラッターエンジン

Flutter APIの新しいバージョンでは、ソースコードに依存するメソッドとネイティブの混合開発を使用できます。Flutterエンジンを予熱してからキャッシュに保存できることが記載されています。このFlutterエンジンを使用してFlutterページを後で処理するため、作成を回避できます。複数のFlutterエンジンにより、メモリ消費量が削減されます。

では、Flutterエンジンとは何ですか?

FlutterエンジンはC ++によって実装され、次の機能を担当します。

  • スレッド管理
  • Dart VMの状態管理
  • Dartコードの読み込み、読み込まれたコードは個別の分離で実行されます

ダートVM

Dartコードを実行する場所

隔離する

Javaのスレッドに似ていますが、Isolateはメモリを共有せず、ポートを介してデータを送受信するため、ロックの問題はありません。

ウィジェット更新メカニズム

親ウィジェットの構成データが変更され、そのState.buildによって返されたウィジェット構造が前のものと異なる場合、対応する要素ツリーを再構築する必要があります。Elementを再利用するには、まずElementを再構築する前に、古いツリーの同じ位置でElementを再利用しようとします。Elementノードは、更新する前に対応するウィジェットのcanUpdateメソッドを呼び出します。trueを返す場合は、古いElementを再利用します。古い要素は新しいウィジェット構成データで更新されます。更新されない場合、新しい要素が作成されます。Widget.canUpdateは主に、newTypeとoldWidgetのruntimeTypeとキーが同時に等しいかどうかを判断するためのものです。それらが同時に等しい場合はtrueを返し、そうでない場合はfalseを返します。この原則によれば、ウィジェットを強制的に更新する必要がある場合、別のキーを指定することで多重化を回避できます。

元の記事82件を公開 86のような 110,000以上

おすすめ

転載: blog.csdn.net/unicorn97/article/details/105254356