Resumen de algunos conceptos de conocimiento en Flutter

Después de estudiar Flutter por un tiempo, hay algunas cosas conceptuales que todavía planeo escribir y grabar.

Widget 、 Elemento 、 RenderObject

Todos saben que Widget, Element, RenderObject, cada parte es responsable de la función correspondiente, solo necesitamos escribir Widget, por qué necesitamos Element y RenderObject, esto se debe a que Flutter no siempre puede eliminar la creación para garantizar un buen rendimiento cuando una gran cantidad de widgets El nuevo objeto puede reutilizar el objeto original, como reutilizar Element, y luego solo necesita modificar el contenido de RenderObject, lo que puede reducir la pérdida de rendimiento y mejorar la fluidez.
Inserte la descripción de la imagen aquí

Aleteo del motor

En la nueva versión de la API de Flutter, podemos usar métodos dependientes del código fuente y desarrollo mixto nativo. Menciona que puede precalentar un motor de Flutter y luego guardarlo en la memoria caché. Utilizará este motor de Flutter para procesar la página de Flutter más tarde, para evitar crear Múltiples motores Flutter reducen el consumo de memoria.

Entonces, ¿qué es el motor Flutter?

Flutter Engine es implementado por C ++ y es responsable de las siguientes funciones:

  • Gestión de hilos
  • Dart VM State Management
  • Dart code loading, el código cargado se ejecuta en Isolate separado
  • ...

Dart VM

Dónde ejecutar el código Dart

Aislar

Similar a los subprocesos en Java, pero Isolate no comparte memoria y envía y recibe datos a través del puerto, por lo que no hay problemas con los bloqueos.

Mecanismo de actualización de widgets

Cuando los datos de configuración de un Widget primario cambian, y la estructura del Widget devuelta por su State.build es diferente de la anterior, debe reconstruir el árbol de Elementos correspondiente. Para reutilizar Element, antes de la reconstrucción del elemento, primero intentará reutilizar el elemento en la misma posición en el árbol anterior. El nodo del elemento llamará al método canUpdate del Widget correspondiente antes de actualizar. El antiguo elemento se actualizará con los nuevos datos de configuración del widget; de lo contrario, creará un nuevo elemento. Widget.canUpdate es principalmente para determinar si el tiempo de ejecución y la clave de newWidget y oldWidget son iguales al mismo tiempo. Si son iguales al mismo tiempo, devuelve verdadero, de lo contrario devuelve falso. De acuerdo con este principio, cuando necesitamos forzar la actualización de un widget, podemos evitar la multiplexación especificando una clave diferente.

82 artículos originales publicados · Me gusta 86 · Visita 110,000+

Supongo que te gusta

Origin blog.csdn.net/unicorn97/article/details/105254356
Recomendado
Clasificación