当前位置: 首页 > 知识库问答 >
问题:

类型'String'不是类型强制转换中的类型'Map'的子类型

楚羽
2023-03-14

当我点击我的颤振应用程序中的一个按钮时,我出现了一个错误。这里有人有解决方案吗?!

路线

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();

完全错误

生成CategoryMalsScreen(脏,依赖项:[[U ModalScopeStatus],状态:[U CategoryMalsScreenState]时引发了以下错误:类型“String”不是类型“Map”的子类型

导致错误的相关小部件是:CategoryMalsScreenfile:///C:/Users/DELL/AndroidStudioProjects/meal_app/lib/main.dart:37:50抛出异常时,这是堆栈:#0#U CategoryMalsScreenState。构建(包:套餐应用程序/屏幕/类别套餐屏幕。dart:16:65)#1状态元素。构建(包:flatter/src/widgets/framework.dart:4691:27)#2组件元素。PerformBuild(包:flatter/src/widgets/framework.dart:4574:15)#3 StatefulElement。PerformBuild(包:flatter/src/widgets/framework.dart:4746:11)#4元素。重建(包:flatter/src/widgets/framework.dart:4267:5)

共有1个答案

西门靖琪
2023-03-14

演示


class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(debugShowCheckedModeBanner: false, routes: {
      '/': (context) => CategoriesScreen(), // the HomePage
      CategoryMealsScreen.routeName: (context) => CategoryMealsScreen(),
    });
  }
}

class CategoriesScreen extends StatefulWidget {
  CategoriesScreen({Key? key}) : super(key: key);

  @override
  _MyWidgetXState createState() => _MyWidgetXState();
}


class _MyWidgetXState extends State<CategoriesScreen> {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          ElevatedButton(
            onPressed: () {
              Navigator.of(context)
                  .pushNamed(CategoryMealsScreen.routeName, arguments: {
                'id': "id 1",
                'title': "title",
              });
            },
            child: Text("pop"),
          ),
        ],
      ),
    );
  }
}

class CategoryMealsScreen extends StatefulWidget {
  static final String routeName = "/asdasd";
  CategoryMealsScreen({Key? key}) : super(key: key);

  @override
  _MyW2State createState() => _MyW2State();
}

class _MyW2State extends State<CategoryMealsScreen> {
  @override
  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"];

    return Scaffold(
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.of(context).pop();
          },
          child: Text("pop, $categoryTitle $categoryId"),
        ),
      ),
    );
  }
}

 类似资料:
  • 我试图将一个嵌套的JSON对象发布到API。下面是我正在尝试的简单代码。 我收到错误消息:

  • 我有这个通用函数: 我这样称呼它: 但是,由于我将使用get_存储框作为我的_数据客户端,改为使用配置单元框,因此出现以下错误: 配置单元必须以不同的格式存储数据,这可能是由于加密造成的,但如何解释这一点并消除此错误?

  • 我正在开发一个依靠API REST调用的flutter应用程序。来自API的响应有点复杂。当调用我的API(例如:api/产品)时,我可以从日志中看到响应:但是我有这个错误: 类型列表 StackTrace: [更新]:退货产品响应。fromJson(response)而不是response ProductsRespository: ProductsBloc: 回应: ApiProvider: 模

  • 我要在颤栗中继续我的旅程。我能够在ListView中显示一个简单的json。现在我尝试使用带有嵌套对象的json,但每次运行应用程序时都会出现错误 我正在为json模型类生成代码,如颤振官方文档中建议的那样。 这个错误似乎是在我分析用户时发生的。在调试时,我看到名称和姓氏被成功解析,但当我跳转到user中的details对象时。g、 在行中省道: 我看到错误: 如何解决此错误,以及如何访问所有嵌套

  • 当我运行我的代码时,它返回了错误:类型“Future”不是类型转换中“List”类型的子类型。我该如何修复它?它是在我从Firebase获取数据之前匹配引擎运行的?我试图将wait添加到List demoProfiles=getdata()作为wait List;但它返回错误。我真的是新手,这个问题已经困扰了我一整天。请帮帮我

  • 在存储到本地数据库之前,将字符串转换为对象的正确方法是什么? 这是的输出: 我试图将其转换为CreatedBy对象 创造的 这里是我的本地表列 错误