AppBar — τι είναι, ρύθμιση και widgets Flutter

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-07-02 Χρόνος ανάγνωσης: 9 λεπ

AppBar — είναι ένα widget του επάνω πίνακα οθόνης στο Flutter που υλοποιεί το στοιχείο Material Design με τίτλο, ενέργειες, κουμπί πλοήγησης και καρτέλες. Σε αντίθεση με ένα προσαρμοσμένο πάνελ σε Row ή Stack, το AppBar παρέχει έτοιμη αρχιτεκτονική με σωστό ύψος 56dp (48dp σε συμπτυγμένη κατάσταση) και αυτόματη επεξεργασία SafeArea. Σύμφωνα με Flutter API Reference (2026), το AppBar υποστηρίζει κινούμενα σχέδια κατά την κύλιση μέσω SliverAppBar και ενσωμάτωση με Material 3 μέσω της παραμέτρου forceMaterialTransparency. Σε μια τυπική εφαρμογή κινητού, το AppBar λειτουργεί ως κέντρο πλοήγησης και πληροφοριών, συνδυάζοντας τον τίτλο σελίδας, τις ενέργειες συστήματος και την εναλλαγή μεταξύ ενοτήτων.

Κύρια σημεία

  • AppBar — widget επάνω πίνακα στο Flutter με τίτλο, actions, leading και υποστήριξη TabBar και Material 3
  • Title — το κείμενο τίτλου, κεντραρισμένο ή στοιχισμένο αριστερά ανάλογα με την πλατφόρμα
  • Actions — λίστα widget ενεργειών (IconButton, PopupMenuButton) που τοποθετούνται δεξιά στο AppBar
  • Leading — κουμπί πλοήγησης αριστερά (εικονίδιο χάμπουργκερ για Drawer ή κουμπί "Πίσω" για ένθετες οθόνες)
  • Bottom — κάτω περιοχή του AppBar για ενσωμάτωση TabBar, PreferredSize ή προσαρμοσμένων widget

Τι είναι το AppBar στο Flutter

AppBar — είναι ένα τυπικό στοιχείο Material του επάνω πίνακα που εμφανίζεται στο επάνω μέρος του Scaffold. Περιέχει τον τίτλο οθόνης, το κουμπί πλοήγησης (συνήθως εικονίδιο χάμπουργκερ ή βέλος "Πίσω") και ενέργειες — εικονίδια που ανοίγουν αναζήτηση, ρυθμίσεις ή άλλες λειτουργίες. Το AppBar προσαρμόζεται αυτόματα στην πλατφόρμα: στο Android χρησιμοποιείται τυπικό Material bottom-shadow, στο iOS — πιο επίπεδο σχέδιο με διαφάνεια.

Το AppBar υλοποιεί τη διεπαφή PreferredSizeWidget, που σημαίνει ότι το ύψος του είναι σταθερό και γνωστό πριν την κατασκευή. Από προεπιλογή, το ύψος του AppBar είναι 56dp σε Android και 44dp σε iOS σε κατακόρυφο προσανατολισμό, λαμβάνοντας υπόψη το SafeArea στο επάνω μέρος. Αυτό το χαρακτηριστικό επιτρέπει στο Scaffold να υπολογίζει εκ των προτέρων τον διαθέσιμο χώρο για το body, αποφεύγοντας την ανασύνθεση κατά την απόδοση.

Σύμφωνα με Flutter Material Library Guide (2026), το AppBar έχει περάσει από πολλές επαναλήψεις: στο Flutter 1.x ήταν ένα απλό δοχείο με κείμενο, στο Flutter 2.x έλαβε υποστήριξη για Material 3 και flexibleSpace, και στο Flutter 3.x — ενσωμάτωση με System UI (χρώμα γραμμής κατάστασης, διαφάνεια). Το σύγχρονο AppBar υποστηρίζει Dynamic Color από το Material You σε συσκευές Android 12+.

Δομή AppBar: ιδιότητες και παράμετροι

AppBar παρέχει ένα σύνολο παραμέτρων που ελέγχουν κάθε μέρος του επάνω πίνακα. Η κατανόηση αυτών των ιδιοτήτων επιτρέπει την ευέλικτη ρύθμιση του πίνακα για οποιεσδήποτε απαιτήσεις σχεδίασης χωρίς τη δημιουργία προσαρμοσμένων λύσεων.

ΙδιότηταΤύποςΠεριγραφή
titleWidget?Κύριος τίτλος του πίνακα, συνήθως Text με όνομα οθόνης
leadingWidget?Widget αριστερά του τίτλου (κουμπί "Πίσω" ή εικονίδιο μενού)
actionsList<Widget>?Λίστα widget ενεργειών δεξιά (IconButton, PopupMenuButton)
bottomPreferredSizeWidget?Κάτω περιοχή για TabBar ή προσαρμοσμένο widget
flexibleSpaceWidget?Widget φόντου που κινείται κατά την κύλιση στο SliverAppBar
backgroundColorColor?Χρώμα φόντου του πίνακα, που αντικαθιστά το χρώμα θέματος
elevationdoubleΣκιά κάτω από τον πίνακα, δημιουργώντας εφέ ανύψωσης πάνω από το περιεχόμενο
centerTitlebool?Κεντράρισμα τίτλου (true — συμπεριφορά Material 3, false — στυλ Android)

Title και leading: ρύθμιση τίτλου και πλοήγησης

Η ιδιότητα title δέχεται οποιοδήποτε widget, αλλά πιο συχνά χρησιμοποιείται Text με ρύθμιση στυλ μέσω TextStyle. Για μεγάλους τίτλους, συνιστάται να τυλίγετε το title σε Flexible ώστε το κείμενο να περικόπτεται σωστά όταν δεν υπάρχει χώρος. Η ιδιότητα leading αντικαθίσταται αυτόματα με BackButton κατά τη μετάβαση σε ένθετη οθόνη μέσω Navigator.push, αν δεν έχει οριστεί ρητά.

Actions: τοποθέτηση εικονιδίων ενεργειών

Η λίστα actions περιέχει widget στοιχισμένα στη δεξιά άκρη του AppBar. Κάθε στοιχείο δεν πρέπει να είναι πλατύτερο από 48dp (πρότυπο Material Design). Για ομαδοποίηση ενεργειών, χρησιμοποιήστε PopupMenuButton — αυτό κρύβει λιγότερο σημαντικές επιλογές σε αναπτυσσόμενο μενού και ακολουθεί τις συστάσεις Material για πυκνότητα διεπαφής.

Προσαρμογή AppBar: στυλ, χρώματα και συμπεριφορά

AppBar υποστηρίζει βαθιά προσαρμογή μέσω ιδιοτήτων χρώματος, σκιάς και περιθωρίων. Η βασική εμφάνιση κληρονομείται από το θέμα της εφαρμογής, αλλά κάθε ιδιότητα μπορεί να αντικατασταθεί μεμονωμένα. Ας εξετάσουμε τα κύρια σενάρια ρύθμισης.

Το χρώμα φόντου του AppBar ορίζεται μέσω backgroundColor. Εάν δεν προσδιορίζεται, χρησιμοποιείται appBarTheme από ThemeData. Στο Material 3, το χρώμα του AppBar υπολογίζεται αυτόματα από ColorScheme.primary, αλλά μπορεί να αντικατασταθεί για συγκεκριμένη οθόνη. Για διαφανές AppBar (συχνά χρησιμοποιείται σε προφίλ), ορίστε backgroundColor: Colors.transparent με elevation: 0.

Η ιδιότητα elevation ελέγχει τη σκιά κάτω από το AppBar. Η τιμή 0 αφαιρεί τη σκιά, δημιουργώντας εφέ "επίπεδου" πίνακα, που είναι σχετικό για Material 3. Η τιμή 4 δίνει τυπική σκιά Material Design. Για προσαρμοσμένο έλεγχο σκιάς, χρησιμοποιήστε shadowColor — το χρώμα σκιάς που διαχωρίζει οπτικά τον πίνακα από το περιεχόμενο.

Για έλεγχο χρώματος κειμένου στο AppBar, χρησιμοποιήστε foregroundColor. Αυτή η ιδιότητα επηρεάζει το χρώμα του τίτλου, των εικονιδίων και του κειμένου σε actions. Κατά την αλλαγή backgroundColor, επιλέγεται αυτόματα αντίθετο foregroundColor, αλλά μπορεί να οριστεί υποχρεωτικά για μη τυπικά σχέδια.

SliverAppBar: κινούμενη έκδοση του AppBar

SliverAppBar — είναι επέκταση του AppBar για χρήση εντός CustomScrollView, που υποστηρίζει κινούμενα σχέδια κατά την κύλιση: σύμπτυξη (collapsing), εφέ παράλλαξης και καρφίτσωμα (pinned). Σε αντίθεση με το τυπικό AppBar, το SliverAppBar είναι widget sliver και μπορεί να αλλάζει δυναμικά μέγεθος ανάλογα με τη θέση κύλισης.

Οι κύριες λειτουργίες του SliverAppBar καθορίζονται από τον συνδυασμό ιδιοτήτων pinned, floating και snap. Στη λειτουργία pinned, ο πίνακας παραμένει πάντα ορατός στο επάνω μέρος της οθόνης. Στη λειτουργία floating, εμφανίζεται κατά την κύλιση προς τα πίσω. Ο συνδυασμός floating + snap δημιουργεί συμπεριφορά "κολλώδους" πίνακα που εμφανίζεται με την παραμικρή κύλιση προς τα πάνω, που χρησιμοποιείται συχνά σε ροές ειδήσεων.

Σύμφωνα με Flutter API SliverAppBar (2026), για να χρησιμοποιήσετε SliverAppBar, πρέπει να αντικαταστήσετε το συνηθισμένο ListView ή Column με CustomScrollView με sliver widgets. Το Scaffold συνεχίζει να λειτουργεί σωστά, αλλά η ιδιότητα appBar του Scaffold πρέπει να είναι null — το SliverAppBar τοποθετείται εντός CustomScrollView ως πρώτο sliver.

Παράδειγμα ρύθμισης AppBar σε εφαρμογή

Ας εξετάσουμε ένα παράδειγμα AppBar με αναζήτηση, αναπτυσσόμενο μενού και TabBar. Αυτός ο κώδικας δείχνει μια τυπική διαμόρφωση του επάνω πίνακα σε μια εφαρμογή Flutter παραγωγής.

dart
Scaffold(
  appBar: AppBar(
    title: const Text('Κατάλογος'),
    centerTitle: true,
    leading: IconButton(
      icon: const Icon(Icons.menu),
      onPressed: () => Scaffold.of(context).openDrawer(),
    ),
    actions: [
      IconButton(
        icon: const Icon(Icons.search),
        onPressed: () => showSearch(context: context, delegate: ProductSearch()),
      ),
      PopupMenuButton<String>(
        onSelected: (String value) {},
        itemBuilder: (context) => [
          const PopupMenuItem(value: 'settings', child: Text('Ρυθμίσεις')),
          const PopupMenuItem(value: 'about', child: Text('Σχετικά με την εφαρμογή')),
        ],
      ),
    ],
    bottom: const TabBar(
      tabs: [
        Tab(text: 'All'),
        Tab(text: 'New'),
        Tab(text: 'Popular'),
      ],
    ),
  ),
  body: const TabBarView(
    children: [
      AllProductsPage(),
      NewProductsPage(),
      PopularProductsPage(),
    ],
  ),
)

Στο παράδειγμα, το AppBar περιέχει έναν κεντραρισμένο τίτλο, κουμπί ανοίγματος Drawer αριστερά, εικονίδιο αναζήτησης και αναπτυσσόμενο μενού δεξιά. Το TabBar στο bottom επιτρέπει εναλλαγή μεταξύ κατηγοριών προϊόντων. Αυτή η διαμόρφωση καλύπτει τα περισσότερα σενάρια εφαρμογών κινητού: πλοήγηση, αναζήτηση, πρόσθετες επιλογές και εναλλαγή ενοτήτων — όλα σε ένα επάνω πάνελ.

Συχνές ερωτήσεις

Πώς να αλλάξω το ύψος του AppBar στο Flutter;

Το ύψος του AppBar είναι σταθερό (56dp) και δεν μπορεί να αλλάξει άμεσα. Για προσαρμοσμένο ύψος, χρησιμοποιήστε PreferredSize, τυλίγοντας ένα προσαρμοσμένο widget του επιθυμητού ύψους. Εναλλακτικά, χρησιμοποιήστε SliverAppBar με collapsedHeight για ευέλικτη διαχείριση μεγέθους σε συμπτυγμένη κατάσταση χωρίς απώλεια λειτουργικότητας του τυπικού πίνακα.

Πώς να αφαιρέσω τη σκιά κάτω από το AppBar;

Ορίστε την ιδιότητα elevation: 0 στον κατασκευαστή του AppBar. Αυτό θα αφαιρέσει τη σκιά και θα κάνει τον πίνακα οπτικά επίπεδο, που αντιστοιχεί στο στυλ Material 3. Για πλήρη έλεγχο, χρησιμοποιήστε shadowColor: Colors.transparent για να αντικαταστήσετε το χρώμα σκιάς χωρίς να αλλάξετε elevation, αν πρέπει να διατηρήσετε τη συντεταγμένη z.

Σε τι διαφέρει το AppBar από το SliverAppBar;

AppBar — στατικός πίνακας σταθερού ύψους που τοποθετείται στο Scaffold.appBar. SliverAppBar — δυναμική έκδοση που χρησιμοποιείται εντός CustomScrollView, μπορεί να συμπτύσσεται, να καρφιτσώνεται και να κινείται κατά την κύλιση. Το SliverAppBar παρέχει ιδιότητες collapsedHeight, expandedHeight, pinned και floating για ευέλικτη διαχείριση συμπεριφοράς κατά την κύλιση.

Πώς να προσθέσω αναζήτηση στο AppBar;

Προσθέστε ένα IconButton με εικονίδιο αναζήτησης στη λίστα actions. Πατώντας, μπορείτε να καλέσετε showSearch με προσαρμοσμένο SearchDelegate που θα ανοίξει την οθόνη αναζήτησης με αυτόματη κίνηση. Εναλλακτικά — αντικαταστήστε το title με TextField, μετατρέποντας το AppBar σε γραμμή αναζήτησης επί τόπου, βολικό για καταλόγους και λίστες.

Γιατί ο τίτλος δεν κεντράρεται στο AppBar;

Από προεπιλογή, το centerTitle είναι null και η συμπεριφορά εξαρτάται από την πλατφόρμα: στο Android ο τίτλος είναι στοιχισμένος αριστερά, στο iOS — στο κέντρο. Ορίστε ρητά centerTitle: true για υποχρεωτικό κεντράρισμα και στις δύο πλατφόρμες. Αν ο τίτλος δεν κεντράρεται λόγω leading, ελέγξτε ότι το leading δεν είναι null — η παρουσία του μετατοπίζει τον τίτλο δεξιά.

Περίληψη

  • AppBar — τυπικός επάνω πίνακας στο Flutter με τίτλο, leading, actions και bottom για TabBar, λαμβάνοντας αυτόματα υπόψη το SafeArea
  • Title — κεντρικό στοιχείο του πίνακα που δέχεται οποιοδήποτε widget με ρύθμιση κεντραρίσματος μέσω centerTitle
  • Actions — λίστα widget ενεργειών δεξιά, κάθε ένα πλάτους έως 48dp σύμφωνα με το πρότυπο Material Design
  • Leading — κουμπί πλοήγησης αριστερά, αυτόματα αντικαθίσταται με BackButton κατά μετάβαση σε ένθετη οθόνη
  • SliverAppBar — επέκταση AppBar για CustomScrollView με υποστήριξη σύμπτυξης, καρφιτσώματος και εφέ παράλλαξης
  • Material 3 — το AppBar υποστηρίζει Dynamic Color, διαφάνεια και NavigationBar μέσω παραμέτρου forceMaterialTransparency
  • Προσαρμογή — οι ιδιότητες backgroundColor, elevation, foregroundColor και shadowColor επιτρέπουν ακριβή ρύθμιση εμφάνισης για το σχέδιο του έργου

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης