flutter - Flutter 传递的参数总是返回 null
问题描述
在这个简单的颤动GitHub存储库实现中,我们有一个简单的屏幕,我们想要传递参数并将它们放在目标屏幕中,例如
ScreenA()
我们想要传递参数的表单ScreenB()
定义的路线:
routes: {
'/page/one': (context) => ScreenA(),
'/page/two': (context) => ScreenB(),
'/page/three': (context) => ScreenC(),
},
我们所有的拳头ScreenA()
:
class ScreenA extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Navigation with params'),
),
body: Center(
child: ElevatedButton(
child: Text('Click me!'),
onPressed: () {
Navigator.pushNamed(
context,
'/page/two',
arguments: PageArguments(
id: 1,
title: "Example Title"
),
);
},
),
),
);
}
}
和目标页面原样ScreenB()
:
class ScreenB extends StatelessWidget {
@override
Widget build(BuildContext context) {
final arguments = ModalRoute.of(context)!.settings.arguments;
/* getting currect route name */
print(ModalRoute.of(context)!.settings.name);
/* getting NULL arguments */
print(arguments);
return Scaffold();
}
}
class PageArguments{
final int id;
final String title;
PageArguments({required this.id, required this.title});
}
解决方案
似乎 Persistent Bottom Navigation Bar 包没有正确传递路线信息,这可能是一个错误。如果你在 的build
方法中设置断点ScreenB
,你会看到不仅参数为空,而且路由名称也错误。
我尝试过main.dart
,onGenerateRoute
它以这种方式对我有用:
List<PersistentBottomNavBarItem> _navBarsItems() {
return [
PersistentBottomNavBarItem(
title: 'Home',
icon: Icon(Icons.home),
routeAndNavigatorSettings: RouteAndNavigatorSettings(
initialRoute: '/page/one',
onGenerateRoute: (RouteSettings settings) {
WidgetBuilder builder;
// Manage your route names here
switch (settings.name) {
case '/page/one':
builder = (BuildContext context) => ScreenA();
break;
case '/page/two':
builder = (BuildContext context) => ScreenB();
break;
default:
throw Exception('Invalid route: ${settings.name}');
}
return MaterialPageRoute(
builder: builder,
settings: settings,
);
})),
PersistentBottomNavBarItem(title: 'Help', icon: Icon(Icons.help)),
];
}
关于提出论点,我同意另一个答案。
推荐阅读
- java - 用动态生成的类替换反射调用
- c++ - 为什么我指向 char 的指针只能获取其中的第一个字符?
- php - PHP 应用程序显示有关供应商库的错误
- mongodb - MongoDB findOneAndUpdate 投影
- javascript - 我需要帮助使用递归来导航 DOM 中的每个元素
- java - java.lang.NoSuchFieldError:句柄
- excel - 我想将某些行数据项合并到一个选项卡中
- maven - 无法在 Eclipse 的 Maven 项目中找到 bin 文件夹
- android - FragmentScenario 和嵌套的 NavHostFragments 在 Instrumentation 测试中未按预期执行导航
- r - R在数据框中查找替换