Sobes.tech
Middle

Ի՞նչ ճարտարապետական շերտեր է բաժանվում Flutter-ը։

sobes.tech AI

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

Flutter-ը բաժանվում է հետևյալ ճարտարապետական շերտերի՝

  1. Embedder: Պատասխանատու է օպերացիոն համակարգի հետ փոխազդեցության համար: Պատրաստում է հատուկ հարթակային մուտքագրում մակերեսների ռենդերացման, հասանելիության ծառայությունների մուտքի, օգտվողի մուտքի և կյանքի ցիկլի կառավարման համար: Embedder-ը գրված է հարմար լեզվով՝ համապատասխան հարթակի համար (Java՝ Android-ի համար, Objective-C/Swift՝ iOS-ի համար, C++՝ Windows/Linux/macOS-ի համար):
  2. Engine: Ֆրեյմվորկի հիմնական մասը: Գրել է հիմնականում C/C++-ով: Պահպանում է ցածր մակարդակի գործառույթներ՝ Skia (2D գրաֆիկայի գրադարան), Text (տեքստի հետ աշխատելու գրադարան), IO (մուտք/արտահոսք), Dart Runtime, Flutter Engine (աշխատանքների պլանավորում, ռենդերային կառավարման, կոմպոզիցիա):
  3. Framework: Գրված է Dart-ով: Սա է Dart API-ն, որի հետ Flutter ծրագրավորողները աշխատում են ուղղակի: Բաղկացած է մի քանի մակարդակից՝
    • Foundation: Հիմնական դասեր և Utilities:
    • Widgets: Flutter-ի UI-ի հիմքը: Widget-ները նկարագրում են ինտերֆեյսի տարրերի կոնֆիգուրացիան:
    • Rendering: Աբստրակցիաներ ռենդերացման համար, որոնք ապահովում են ցածր մակարդակի օբյեկտներ ռենդերային ծառեր կառուցելու համար:
    • Painting, Gestures, Animation և այլն: Լավագույն մակարդակներ, որոնք ապահովում են նկարելու, ժեստերի մշակման, անիմացիաների և այլն ֆունկցիոնալություն:
    • Material/Cupertino Libraries: Widget-ների հավաքածուներ, որոնք իրականացնում են Material Design և iOS Cupertino դիզայնային համակարգերը:

Ահա պարզեցված ներկայացում՝

[Ձեր հավելվածի կոդը (Dart Widget-ներ)]
        |
    [Framework (Dart)]
        |
    [Engine (C/C++)]
      /        \
[Embedder]    [Skia]
   |            |
[Օպերացիոն համակարգ]

Embedder-ը գործարկում է Engine-ը, որը ապահովում է Dart Runtime և API: Framework-ը, որը գրված է Dart-ով, փոխազդում է Engine-ի հետ Dart API-ի միջոցով: Ձեր հավելվածի կոդը օգտագործում է Framework-ի widget-ները՝ օգտագործողի ինտերֆեյսը կառուցելու համար: Engine-ը, իր հերթին, օգտագործում է Skia՝ տարրերը ռենդերացնելու համար Canvas-ի վրա, որը տրամադրված է Embedder-ի կողմից: