【发布时间】:2021-11-07 04:23:12
【问题描述】:
当我单击 Flutter 应用程序中的按钮时出现错误 这里有人有解决方案吗?!
路线
routes:{
'/':(context) => CategoriesScreen(), // the HomePage
CategoryMealsScreen.routeName: (context) => CategoryMealsScreen(),}
论据
void selectCategory(BuildContext ctx) {
Navigator.of(ctx).pushNamed(CategoryMealsScreen.routeName,
arguments: {
'id': id,
'title': title,
});
和地图
Widget build(BuildContext context) {
final routeArg = ModalRoute.of(context)?.settings.arguments as Map<String, String>; // the question mark is needed but I don't know why..!
final categoryId = routeArg["id"];
final categoryTitle = routeArg["title"];
final categoryMeals = DUMMY_MEALS.where((meal){
return meal.categories.contains(categoryId);
}).toList();
完整错误
在构建 CategoryMealsScreen(脏,依赖项:[_ModalScopeStatus],状态:_CategoryMealsScreenState#b3c64)时引发了以下 _CastError:
“String”类型不是类型转换中“Map
相关的导致错误的小部件是: CategoryMealsScreen file:///C:/Users/DELL/AndroidStudioProjects/meal_app/lib/main.dart:37:50 抛出异常时,这是堆栈: #0 _CategoryMealsScreenState.build(包:meal_app/screens/category_meals_screen.dart:16:65) #1 StatefulElement.build (package:flutter/src/widgets/framework.dart:4691:27) #2 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4574:15) #3 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11) #4 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
【问题讨论】:
-
参数很可能是一个字符串。打印
routeArg并检查数据的样子。您还可以向我们展示如何将参数添加到该路由。 -
你能说明你是如何传递数据的吗?
-
似乎 ModalRoute.of(context)?.settings.arguments 没有返回地图。检查一下。
-
是
final routeArg = ModalRoute.of(context)?.settings.arguments as Map<String, String>;内部构建方法。如果不放在 build 方法中。 -
@YeasinSheikh 它已经在 Build 方法中
标签: flutter flutter-test