【问题标题】:how to build Navigator() if use Getx?如果使用 Getx,如何构建 Navigator()?
【发布时间】:2021-05-27 23:31:53
【问题描述】:

如果我们使用MaterialApp,我们会这样构建:

Navigator(
                key: naviKey,
                onGenerateRoute: (routeSettings) => MaterialPageRoute(
                  builder: (context)=>Container(),
                ),
              )

现在,如果我们使用Getx,如何构建?

【问题讨论】:

标签: flutter flutter-getx


【解决方案1】:

GetX 中的路由可以这样设置。注意Page1.id 是在将static const id = 'page_1 放入Page1 之后,因此您不必使用原始字符串。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      home: Page1(),
      routes: {
        Page1.id: (context) => Page1(),
        Page2.id: (context) => Page2(),
      },
    );
  }
}

或者像这样

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      home: Page1(),
      getPages: [
       GetPage(name: Page1.id, page: () =>  Page1()),
       GetPage(name: Page1.id, page: () =>  Page1()),
      ],
    );
  }
}

如果您不想将您的GetMaterialApp 与您的所有路线混淆,您可以在另一个页面上设置路线列表。

然后当你想导航时,你可以这样做

Get.to(Page2());

【讨论】:

  • 我想在不改变父级的情况下实现内部导航
  • 我想使用这样的过渡“/home/next_page/next/next/next”
  • 使用命名路由不适用于某些用例。例如,我正在尝试实现这个 - codewithandrea.com/articles/… ,如果没有 Navigator 的 onGenerateRoute,这是不可能的
猜你喜欢
  • 2021-11-07
  • 2022-08-05
  • 2022-08-06
  • 2021-03-31
  • 1970-01-01
  • 2021-03-06
  • 2021-07-30
  • 2022-12-14
  • 2021-12-13
相关资源
最近更新 更多