【问题标题】:Navigation with custom navigator and globalkey使用自定义导航器和全局键进行导航
【发布时间】:2020-09-29 08:32:47
【问题描述】:

我按照here 的建议使用自定义导航器实现了持久底栏。

class _MainScreenState extends State<MainScreen> {
  final _navigatorKey = GlobalKey<NavigatorState>();

  // ...

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Navigator(
        key: _navigatorKey,
        initialRoute: '/',
        onGenerateRoute: (RouteSettings settings) {
          WidgetBuilder builder;
          // Manage your route names here
          switch (settings.name) {
            case '/':
              builder = (BuildContext context) => HomePage();
              break;
            case '/page1':
              builder = (BuildContext context) => Page1();
              break;
            case '/page2':
              builder = (BuildContext context) => Page2();
              break;
            default:
              throw Exception('Invalid route: ${settings.name}');
          }
          // You can also return a PageRouteBuilder and
          // define custom transitions between pages
          return MaterialPageRoute(
            builder: builder,
            settings: settings,
          );
        },
      ),
      bottomNavigationBar: _yourBottomNavigationBar,
    );
  }
}

现在,如果我在 HomePage 上有带有需要导航到 Page2 的按钮的子小部件,我将如何从 HomePage 内部实现这一点 - 因为?

【问题讨论】:

  • 像任何其他Navigator: Navigator.of(context).pushNamed('/page2')
  • 是的,有效.. 我不知道为什么我认为我必须通过_navigatorKey。谢谢!
  • 当然,欢迎您

标签: flutter


【解决方案1】:

一些按钮或 GestureDetector onTap : ()=&gt;Navigator.of(context).pushNamed('/page2')
要么 onPress : ()=&gt;Navigator.of(context).pushNamed('/page2')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    相关资源
    最近更新 更多