Flutter routing 2.0 和 Flutters original (1.0) 可以同时使用吗?

Posted

技术标签:

【中文标题】Flutter routing 2.0 和 Flutters original (1.0) 可以同时使用吗?【英文标题】:Flutter routing 2.0 and Flutters original (1.0) we can use both at the same time? 【发布时间】:2021-10-04 16:51:53 【问题描述】:

我正在尝试使用颤振开发深度链接,文档说

'如果你想实现深度链接,或者利用多个 导航员,请查看 2.0 版本。'

所以我按照这篇论文来更好地理解这种方法

https://medium.com/flutter/learning-flutters-new-navigation-and-routing-system-7c9068155ade

但我认为我们必须使用

MaterialApp.router(
      title: 'Books App',
      routerDelegate: _routerDelegate,
      routeInformationParser: _routeInformationParser,
    );

在我的代码中

MaterialApp(
            localizationsDelegates: localizationsDelegates(),
            supportedLocales: supportedLocales(),
            theme: mainData(),
            initialRoute: _initialScreen,
            onGenerateRoute: (RouteSettings settings) =>
                getGeneratedRoutes(settings),

MaterialApp.router 不会接受这些参数initialRoute, onGenerateRoute

所以我认为这不是一个重大变化,我们可以使用 MaterialApp.router 和 MaterialApp 在同一时间?

利用 MaterialApp 并随着时间的推移更新到路由 2.0

提前谢谢

【问题讨论】:

【参考方案1】:

您不能在同一个应用程序中使用MaterialAppMaterialApp.router(当然可以,但它不会做您可能希望它做的事情)。

但是,在使用MaterialApp.router 时,您仍然可以使用Navigator.pushNavigator.pop

还值得一提的是,Flutter 团队对什么是/不是重大更改有相当严格的定义:重大更改是需要对框架本身的 1 个或多个测试进行更改的更改。

只要在引入 MaterialApp.router 的 Flutter 版本中,任何引用 MaterialApp 的测试仍然通过,就不会被视为重大更改。

这与 MaterialAppMaterialApp.router 兼容不同(尽管在这种特定情况下它们恰好是)

【讨论】:

【参考方案2】:

我找到了这篇论文

https://docs.google.com/document/d/1Q0jx0l4-xymph9O6zLaOY4d_f7YFpNWX_eGbzYxr9wY/edit#

命令式和声明式 AP 并存

如上所述并在下一节中解释了现有的 Navigator 的命令式 API 和新的声明式 API (possibly 结合新路由器)can be used in parallel within the same app

但它没有任何示例。我会跟着我的搜索

【讨论】:

以上是关于Flutter routing 2.0 和 Flutters original (1.0) 可以同时使用吗?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Navigator 2.0 页面过渡

Navigator 2.0 和抽屉

Flutter基础组件02Container

Flutter基础组件02Container

Flutter基础组件05Icon

Flutter基础组件06Icon