Δηλωτική πλοήγηση και επικαλύμματα για Flutter.

Οδηγήστε τις σελίδες του Navigator 2.0 και τα τοπικά επικαλύμματα χωρίς Navigator.push/pop ή showDialog.

Οι σελίδες είναι δεδομένα

Το PageEntry αποθηκεύει μόνο μεταδεδομένα. Το UI δημιουργείται από τον resolver σας.

Τοπικά επικαλύμματα οθόνης

Οι διάλογοι και τα κάτω φύλλα περιορίζονται ανά οθόνη χωρίς καθολική κατάσταση.

Ανεξάρτητο από κατάσταση

Χρησιμοποιήστε setState, Riverpod, Bloc ή Provider. Δεν απαιτούνται εξαρτήσεις.

Πρώτα βήματα

Εγκαταστήστε το declarative_nav και αποδώστε σελίδες μέσω callback του resolver.

Εγκατάσταση

flutter pub add declarative_nav

Οδηγός χρήσης

app_root.dart
class AppRoot extends StatefulWidget {
  const AppRoot({super.key});

  @override
  State<AppRoot> createState() => _AppRootState();
}

class _AppRootState extends State<AppRoot> {
  OverlayRequest? _overlay;
  late List<PageEntry> _pages;

  @override
  void initState() {
    super.initState();
    _pages = const [PageEntry(key: 'home', name: '/home')];
  }

  Widget buildPage(BuildContext context, PageEntry page) {
    return HomePage(onOpenDialog: _openDialog);
  }

  @override
  Widget build(BuildContext context) {
    return DeclarativePagesNavigator(
      pages: _pages,
      buildPage: buildPage,
      onPopTop: _popTop,
      canPopTop: () => _overlay == null,
    );
  }
}
Σημαντική σημείωση

Αυτό το πακέτο αποφεύγει Navigator.push/pop και κλήσεις showDialog. Οδηγήστε την πλοήγηση και τα επικαλύμματα από την κατάσταση.

Προηγούμενο

Επισκόπηση