【问题标题】:Dynamic navigation routes动态导航路线
【发布时间】:2018-08-10 11:08:35
【问题描述】:

我有一个应用程序,我想快速尝试并重新制作。在这个应用中,导航路线变化很大,并不是在一个集中的地方定义,而是由不同的开发者在不同的“微项目”中定义,然后在主应用中绑定在一起。

所以我的问题是:我可以在运行时以某种方式在 MaterialApp 上动态设置路由吗?这样当加载给定的小部件类时,它会获取 MaterialApp 实例并在 MaterialApp 上设置一个新的路由 Map,并且之前的所有路由现在都消失了并替换为新路由?

【问题讨论】:

标签: flutter


【解决方案1】:

MaterialApp 上有一个属性来处理动态路由:onGenerateRoute

例如,如果你这样做

onGenerateRoute: (routeSettings) {
 if (condition) {
   return new MaterialPageRoute(
     builder: (context) => new MyPage(),
     settings: routeSettings,
   );
 }
 // fallback route here
},

这将处理所有个路由,即使它们不是静态定义的,只要它们匹配condition

但请记住,Flutter 禁止使用 dart:mirror。这意味着如果您想进一步推动事情,您必须使用代码生成器。结合装饰器,您可以在任何时候编写它:

class MyWidget extends StatelessWidget {
  final int prop;

  @MyNavigation
  MyWidget({this.prop});

  @override
  Widget build(BuildContext context) {
    return new Container();
  }
}

它会自动生成处理路由/mywidget/{prop}的代码。

【讨论】:

  • 我正在尝试将我的路由放入静态路由表中,并且正在努力解决语法问题。没有在教程中的任何关于颤振的文档都是可怕的 imo。如何从小部件中获取 WidgetBuilder?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 2020-10-20
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多