Sobes.tech
Middle

Flutter hansı memarlıq qatlarına bölünür?

sobes.tech Süni İntellekt

AI-dan cavab

Flutter aşağıdakı memarlıq qatlarına bölünür:

  1. Embedder: İşletim sistemi ilə qarşılıqlı əlaqə üçün məsuliyyət daşıyır. Yüzeylərin çəkilməsi, əlçatanlıq xidmətlərinə giriş, istifadəçi girişi və həyat dövrünün idarə olunması üçün platforma-özgü giriş təmin edir. Embedder xüsusi platformaya uyğun dil ilə yazılmışdır (Android üçün Java, iOS üçün Objective-C/Swift, Windows/Linux/macOS üçün C++).
  2. Engine: Framework-ün nüvəsidir. Əsasən C/C++ ilə həyata keçirilmişdir. Aşağı səviyyəli funksionallıq təmin edir: Skia (2D qrafik kitabxanası), Text (mətn ilə işləmək üçün kitabxana), IO (giriş/çıxış), Dart Runtime, Flutter Engine (tapşırıq planlaşdırma, render idarəetməsi, kompozisiya).
  3. Framework: Dart dilində yazılmışdır. Flutter inkişafçıları ilə birbaşa qarşılıqlı əlaqə üçün Dart API-dir. Bir neçə səviyyədən ibarətdir:
    • Foundation: Əsas siniflər və utilitlər.
    • Widgets: Flutter-də UI-nin əsasını təşkil edir. Widgetlər interfeys elementlərinin konfiqurasiyasını təsvir edir.
    • Rendering: Render üçün abstraksiyalar, aşağı səviyyəli obyektlər təmin edir və render ağaclarının qurulmasına imkan verir.
    • Painting, Gestures, Animation və s.: Çizim, jestlərin işlənməsi, animasiyalar və s. üçün funksionallıq təmin edən səviyyələr.
    • Material/Cupertino Libraries: Material Design və iOS Cupertino dizayn sistemlərini həyata keçirən widget toplusu.

Budur, sadələşdirilmiş hierarxiya nümayişi:

[Sizin Tətbiq Kodu (Dart Widgetlər)]
        |
    [Framework (Dart)]
        |
    [Engine (C/C++)]
      /        \
[Embedder]    [Skia]
   |            |
[Əməliyyat Sistemi]

Embedder Engine-i işə salır, o isə Dart Runtime və API təmin edir. Dart-da yazılmış olan Framework, Dart API vasitəsilə Engine ilə qarşılıqlı əlaqə qurur. Tətbiq kodunuz, istifadəçi interfeysini qurmaq üçün Framework widgetlərindən istifadə edir. Engine isə, Embedder tərəfindən təmin olunan Canvas üzərində elementləri render etmək üçün Skia-dan istifadə edir.