Sobes.tech
Middle

Σε ποιες αρχιτεκτονικές στρώσεις διαχωρίζεται το Flutter;

sobes.tech AI

Απάντηση από AI

Το Flutter διαιρείται στις ακόλουθες δομικές στρώσεις:

  1. Embedder: Υπεύθυνο για την αλληλεπίδραση με το λειτουργικό σύστημα. Παρέχει μια πλατφόρμα-ειδική είσοδο για την απόδοση επιφανειών, πρόσβαση σε υπηρεσίες προσβασιμότητας, εισαγωγή χρήστη και διαχείριση κύκλου ζωής. Ο Embedder είναι γραμμένος σε μια γλώσσα κατάλληλη για την συγκεκριμένη πλατφόρμα (Java για Android, Objective-C/Swift για iOS, C++ για Windows/Linux/macOS).
  2. Engine: Ο πυρήνας του framework. Υλοποιείται κυρίως σε C/C++. Παρέχει λειτουργίες χαμηλού επιπέδου: Skia (βιβλιοθήκη γραφικών 2D), Text (βιβλιοθήκη για επεξεργασία κειμένου), IO (εισαγωγή/εξαγωγή), Dart Runtime, Flutter Engine (προγραμματισμός εργασιών, διαχείριση απόδοσης, σύνθεση).
  3. Framework: Γραμμένο σε Dart. Είναι το API Dart με το οποίο αλληλεπιδρούν άμεσα οι προγραμματιστές Flutter. Αποτελείται από διάφορα επίπεδα:
    • Foundation: Βασικές κλάσεις και βοηθητικά εργαλεία.
    • Widgets: Η βάση του UI στο Flutter. Τα widgets περιγράφουν τη διαμόρφωση των στοιχείων διεπαφής.
    • Rendering: Αφηγήσεις για την απόδοση, που παρέχουν αντικείμενα χαμηλού επιπέδου για την κατασκευή δέντρων απόδοσης.
    • Painting, Gestures, Animation, κ.ά.: Επίπεδα που παρέχουν λειτουργικότητα για σχεδίαση, χειρισμό gestures, κινούμενα σχέδια κ.ά.
    • Material/Cupertino Libraries: Συλλογές widgets που υλοποιούν συστήματα σχεδίασης Material Design και iOS Cupertino.

Ακολουθεί μια απλοποιημένη αναπαράσταση της ιεραρχίας:

[Ο κώδικάς σας (Widgets Dart)]
        |
    [Framework (Dart)]
        |
    [Engine (C/C++)]
      /        \
[Embedder]    [Skia]
   |            |
[Λειτουργικό Σύστημα]

Ο Embedder ξεκινάει το Engine, το οποίο παρέχει Dart Runtime και API. Το Framework, γραμμένο σε Dart, αλληλεπιδρά με το Engine μέσω της API Dart. Ο κώδικάς σας χρησιμοποιεί τα widgets του Framework για να κατασκευάσει το περιβάλλον χρήστη. Το Engine, με τη σειρά του, χρησιμοποιεί το Skia για να αποδώσει στοιχεία στο Canvas, το οποίο παρέχεται από τον Embedder.