Flutter အတွက် ကြေညာမှုအခြေပြု နာဗီဂေးရှင်းနှင့် အိုဗာလေများ။

Navigator.push/pop သို့မဟုတ် showDialog မသုံးဘဲ Navigator 2.0 စာမျက်နှာများနှင့် မျက်နှာပြင်လိုကယ် အိုဗာလေများကို ထိန်းချုပ်ပါ။

စာမျက်နှာများသည် ဒေတာဖြစ်သည်

PageEntry သည် မက်တာဒေတာသာ သိမ်းဆည်းသည်။ UI ကို resolver မှ ဖန်တီးသည်။

မျက်နှာပြင်လိုကယ် အိုဗာလေများ

Dialog နှင့် bottom sheet များသည် မျက်နှာပြင်အလိုက် ကန့်သတ်ထားပြီး global state မလိုအပ်ပါ။

အခြေအနေမူမမှီ

setState, Riverpod, Bloc သို့မဟုတ် Provider ကို သုံးပါ။ dependency မလိုပါ။

ပထမဦးဆုံး အဆင့်များ

declarative_nav ကို တပ်ဆင်ပြီး resolver callback ဖြင့် စာမျက်နှာများကို render လုပ်ပါ။

တပ်ဆင်ခြင်း

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 ခေါ်ခြင်းများကို ရှောင်ရှားသည်။ နာဗီဂေးရှင်းနှင့် အိုဗာလေများကို state မှ ထိန်းချုပ်ပါ။