Uabiri wa kutangazwa na overlay kwa Flutter.

Dhibiti kurasa za Navigator 2.0 na overlay za eneo la skrini bila Navigator.push/pop au showDialog.

Kurasa ni data

PageEntry huhifadhi metadata pekee. UI huundwa na resolver yako.

Overlay za eneo la skrini

Dialog na bottom sheet zimewekewa kikomo kwa kila skrini bila state ya kimataifa.

Isiyofungamana na state

Tumia setState, Riverpod, Bloc au Provider. Hakuna utegemezi unaohitajika.

Hatua za kwanza

Sakinisha declarative_nav na renderi kurasa kupitia resolver callback.

Usakinishaji

flutter pub add declarative_nav

Mwongozo wa Matumizi

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,
    );
  }
}
Dokezo Muhimu

Kifurushi hiki kinaepuka Navigator.push/pop na miito ya showDialog. Dhibiti uabiri na overlay kutoka kwenye state.

Iliyotangulia

Muhtasari

Inayofuata

Usakinishaji