Sobes.tech
Junior

Ինչ եք հասկանում ռենդերէնգի մասին?

sobes.tech AI

Պատասխան AI-ից

Flutter- ում ռենդերումը՝ դա վիդջեթների (widget tree) ծառը վերածելու գործընթաց է՝ էլեմենտների (element tree), ապա՝ ռենդերային ծառի (render tree), որը վերջում ցուցադրվում է էկրանին:

Հիմնական քայլերը՝

  1. Widget ծառ: Օգտագործողի ինտերֆեյսի դեկլարատիվ նկարագրություն:
  2. Էլեմենտների ծառ: Widget ծառի մեկնաբանում, որը պարունակում է հղումներ widget օրինակների և widget-ի վիճակի (օրինակ, StatefulWidget)։ Էլեմենտների ծառը ծառի կամուրջ է widget և render ծառի միջև:
  3. Render ծառ: Ունի RenderObject օբյեկտներ, որոնք գիտեն՝ ինչպես նկարել ինքնուրույն (paint) և ինչպես որոշել իրենց չափը և դիրքը (layout): Սա՝ աբստրակտ ծառ, որը անկախ է հարթակից:
  4. Նկարագրում և կոմպոզիցիա: GPU-ից անկախ նկարիչ հրամանները ուղարկվում են Skia (Flutter-ի գրաֆիկական շարժիչ)՝ որոնք փոխարկվում են GPU-ից կախված հրամանների:
  5. Rasterիզացիա: GPU-ն նկարում է հրամանները էկրանին՝ պիքսելների վրա:
  6. Ցուցադրում: Պիքսելները ցուցադրվում են սարքի էկրանին:

Ռենդերինգի և դասավորության կառուցման ցիկլը տեղի է ունենում՝ երբ փոփոխություն է կատարվում վիճակում, որը պահանջում է նորից նկարել, կամ՝ երբ ակտիվացվում է ֆրեյմը Scheduler-ի միջոցով։ Scheduler-ը պլանավորում է ֆունկցիաների կատարմանը՝ ներառյալ build (էլեմենտների ծառի կառուցում) և layout / paint (ռենդերային ծառի համար):

// Պարզ օրինակ՝ widget
class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // Ամեն widget նկարագրում է օգտագործողի ինտերֆեյսի մի մաս:
    // Flutter-ը վերածում է դա էլեմենտների և ռենդերային օբյեկտների:
    return Container(
      color: Colors.blue,
      child: Text('Hello'),
    );
  }
}