flutter - 如何从路线类列表中生成路线图
问题描述
我想通过创建路线列表来自动化我的应用程序中的路线分配。然后这个列表将被映射。我的目标是改进我现有的代码。我知道这很令人困惑,您可以通过下面给出的代码更好地理解它:
MaterialApp(
navigatorObservers: <NavigatorObserver>[observer],
home: getWidgetByRouteName(hasRoute), //GameDetails(),
routes: <String, WidgetBuilder>{
SplashPage.routeName: (BuildContext context) => SplashPage(),
Phone.routeName: (BuildContext context) => Phone(),
OTP.routeName: (BuildContext context) => OTP(),
Team.routeName: (BuildContext context) => Team(),
},
),
我想将上面的代码转换成这种类型:
List route = [SplashPage, Phone, OTP];
Map<String, WidgetBuilder> namedRoutes = {};
route.forEach((element) {
namedRoutes[element.routeName] = (BuildContext context) => element();
});
MaterialApp(
navigatorObservers: <NavigatorObserver>[observer],
home: getWidgetByRouteName(hasRoute), //GameDetails(),
routes: namedRoutes
),
如果您对什么是 routeName 感到困惑:
class SplashPage extends StatelessWidget {
static const routeName = '/splash';
..
..
..
}
我收到此错误:
The following NoSuchMethodError was thrown building MainApp(dirty):
Class '_Type' has no instance getter 'routeName'.
Receiver: SplashPage
Tried calling: routeName
解决方案
您不能从表示类的 Type 对象创建类的实例,至少不能没有镜像(Flutter 和 Web 平台都不支持镜像)。
推荐阅读
- reactjs - 无法为下一个 AMP 页面读取未定义的属性“amphtml”
- shell - 使用 shell 脚本,如何在以哈希开头的文件中插入一行?
- azure - 缓存 Azure KeyVault ClientID 和指纹是最佳做法吗?
- python - 如果打开现有的 Chrome 窗口,则使用默认选项的 Selenium Webdriver 永远不会返回
- java - 以编程方式将 ImageView 添加到布局
- python - 视频/图像分析以获取轮廓之间的距离
- mysql - 如何从一个表中只选择行 一个 clumns 值大于 MySQL 中的 b 表计数值
- javascript - GWT CellTable:选择一个复选框会选择表格中的每个复选框/行
- mysql - 在 mysql 中使用其他表中的 MAX 函数
- python-3.x - 使用 GRU 将 conv1D 转换为 Conv2D