Junior
Co chápete pod pojmem renderování?
sobes.tech AI
Odpověď od AI
Renderování ve Flutter je proces převodu stromu widgetů (widget tree) na strom prvků (element tree), poté na strom vykreslení (render tree), který je nakonec zobrazen na obrazovce.
Hlavní kroky:
- Strom widgetů: Deklarativní popis uživatelského rozhraní.
- Strom prvků: Interpretace stromu widgetů, obsahuje odkazy na instance widgetů a stav widgetů (pro
StatefulWidget). Strom prvků slouží jako spojka mezi stromem widgetů a stromem vykreslení. - Strom vykreslení: Obsahuje objekty
RenderObject, které vědí, jak se samy vykreslit (paint) a jak určit svou velikost a pozici (layout). Je to abstraktní strom, nezávislý na platformě. - Malování a složení: Příkazy pro kreslení nezávislé na GPU jsou odesílány do Skia (grafický engine Flutter), který je převádí na GPU závislé příkazy.
- Rasterizace: GPU vykreslí příkazy na pixely obrazovky.
- Zobrazení: Pixely jsou zobrazeny na obrazovce zařízení.
Cyklus vykreslování a sestavování rozvržení probíhá při změně stavu, která vyžaduje překreslení, nebo při aktivaci rámce přes Scheduler. Scheduler plánuje provádění funkcí, včetně build (pro sestavení stromu prvků) a layout / paint (pro strom vykreslení).
// Příklad jednoduchého widgetu
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
// Každý widget popisuje část uživatelského rozhraní.
// Flutter tento popis převádí na prvky a objekty vykreslení.
return Container(
color: Colors.blue,
child: Text('Hello'),
);
}
}