Zusammenfassung einiger Wissenskonzepte in Flutter

Nachdem ich eine Weile Flutter studiert habe, gibt es einige konzeptionelle Dinge, die ich noch aufschreiben und aufzeichnen möchte.

Widget 、 Element 、 RenderObject

Jeder weiß, dass Widget, Element, RenderObject, jeder Teil für die entsprechende Funktion verantwortlich ist. Wir müssen nur Widget schreiben. Warum benötigen Sie Element und RenderObject? Dies liegt daran, dass Flutter die Erstellung nicht immer löschen kann, um eine gute Leistung bei einer großen Anzahl von Widgets sicherzustellen Das neue Objekt kann das ursprüngliche Objekt wiederverwenden, z. B. Element wiederverwenden, und muss dann nur den Inhalt von RenderObject ändern, wodurch der Leistungsverlust verringert und die Sprachkompetenz verbessert werden kann.
Fügen Sie hier eine Bildbeschreibung ein

Flattern Motor

In der neuen Version der Flutter-API können wir Quellcode-abhängige Methoden und native gemischte Entwicklung verwenden. Es wird erwähnt, dass Sie eine Flutter-Engine vorheizen und dann im Cache speichern können. Mit dieser Flutter-Engine können Sie die Flutter-Seite später verarbeiten, um das Erstellen zu vermeiden Mehrere Flattermotoren reduzieren den Speicherverbrauch.

Was ist Flutter Engine?

Flutter Engine wird von C ++ implementiert und ist für folgende Funktionen verantwortlich:

  • Thread-Management
  • Dart VM-Statusverwaltung
  • Beim Laden des Dartcodes wird der geladene Code in einem separaten Isolat ausgeführt

Dart VM

Wo Dart-Code ausgeführt werden soll

Isolieren

Ähnlich wie Threads in Java, jedoch isoliert Isolate keinen Speicher und sendet und empfängt Daten über Port, sodass es keine Probleme mit Sperren gibt.

Widget-Update-Mechanismus

Wenn sich die Konfigurationsdaten eines übergeordneten Widgets ändern und sich die von State.build zurückgegebene Widget-Struktur von der vorherigen unterscheidet, muss der entsprechende Elementbaum neu erstellt werden. Um Element wiederzuverwenden, wird vor dem erneuten Erstellen des Elements zunächst versucht, das Element an derselben Position im alten Baum wiederzuverwenden. Der Elementknoten ruft vor dem Aktualisieren die canUpdate-Methode des entsprechenden Widgets auf. Das alte Element wird mit den neuen Widget-Konfigurationsdaten aktualisiert, andernfalls wird ein neues Element erstellt. Widget.canUpdate dient hauptsächlich dazu, festzustellen, ob der Laufzeittyp und der Schlüssel von newWidget und oldWidget gleichzeitig gleich sind. Wenn sie zur gleichen Zeit gleich sind, wird true zurückgegeben, andernfalls wird false zurückgegeben. Nach diesem Prinzip können wir beim Erzwingen der Aktualisierung eines Widgets das Multiplexen vermeiden, indem wir einen anderen Schlüssel angeben.

Veröffentlichte 82 Originalartikel · Gefällt mir 86 · Besuchen Sie 110.000+

Ich denke du magst

Origin blog.csdn.net/unicorn97/article/details/105254356
Empfohlen
Rangfolge