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】:您不能在同一个应用程序中使用MaterialApp
和MaterialApp.router
(当然可以,但它不会做您可能希望它做的事情)。
但是,在使用MaterialApp.router
时,您仍然可以使用Navigator.push
和Navigator.pop
。
还值得一提的是,Flutter 团队对什么是/不是重大更改有相当严格的定义:重大更改是需要对框架本身的 1 个或多个测试进行更改的更改。
只要在引入 MaterialApp.router
的 Flutter 版本中,任何引用 MaterialApp
的测试仍然通过,就不会被视为重大更改。
这与 MaterialApp
和 MaterialApp.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) 可以同时使用吗?的主要内容,如果未能解决你的问题,请参考以下文章