我在 Flutter 中处理对象时遇到问题

Posted

技术标签:

【中文标题】我在 Flutter 中处理对象时遇到问题【英文标题】:I have a problem with object handling in Flutter 【发布时间】:2022-01-03 16:13:38 【问题描述】:

错误:

参数类型“对象?”不能分配给参数类型'String'.dartargument_type_not_assignable

class Category
  final String name;
  final int numOfCoure;
  final String image;

  Category(this.name, this.numOfCoure, this.image);


var categoriesData = [
  "name":"Lúa", 'course': 17, 'image' :"data\\images\\lua.png",
  "name":"Ngô", 'course': 25, 'image' :"data\\images\\ngo.png",
  "name":"Rau", 'course': 13, 'image' :"data\\images\\rau.png",
  "name":"Hoa", 'course': 17, 'image' :"data\\images\\hoa.png",
];


List<Category> categories = categoriesData
    .map((item) => Category(item['name'], item['course'], item['image']))
    .toList();

【问题讨论】:

【参考方案1】:

使用命名参数,它会解决你的问题。

class Category
  final String? name;
  final int? numOfCoure;
  final String? image;

  Category(this.name, this.numOfCoure, this.image);


var categoriesData = [
  "name":"Lúa", 'course': 17, 'image' :"data\\images\\lua.png",
  "name":"Ngô", 'course': 25, 'image' :"data\\images\\ngo.png",
  "name":"Rau", 'course': 13, 'image' :"data\\images\\rau.png",
  "name":"Hoa", 'course': 17, 'image' :"data\\images\\hoa.png",
];


List<Category> categories = categoriesData
    .map((item) => Category(
        name: item['name'], 
        numOfCoure: item['course'], 
        image: item['image'],
    ))
    .toList();

请确保在 Category 类中声明的字段前面添加可空字符,因为您尚未在构造函数中初始化它们。

【讨论】:

没有。它不能解决我的问题 参数“name”由于其类型的原因不能有值“null”,但隐含的默认值为“null”。尝试添加显式的非“空”默认值或“必需”修饰符。dartmissing_default_value_for_parameter String name 这是因为您已将类别中的所有字段标记为 NON-NULL。只需添加 ?在类型之后,它将解决问题。类类别最终字符串?姓名;最终诠释?课程数量;最终字符串?图片;类别(this.name, this.numOfCoure, this.image); 嘿,如果它解决了您的问题,请您标记为答案吗?【参考方案2】:

试着给它一个类型

class Category
  final String name;
  final int numOfCoure;
  final String image;

  Category(this.name, this.numOfCoure, this.image);


var categoriesData = [
  "name":"Lúa", 'course': 17, 'image' :"data\\images\\lua.png",
  "name":"Ngô", 'course': 25, 'image' :"data\\images\\ngo.png",
  "name":"Rau", 'course': 13, 'image' :"data\\images\\rau.png",
  "name":"Hoa", 'course': 17, 'image' :"data\\images\\hoa.png",
];


List<Category> categories = categoriesData
    .map((item) => Category(item['name'] as String, item['course'] as int, item['image'] as String))
    .toList();

【讨论】:

谢谢。我的问题解决了 怎么解决的?

以上是关于我在 Flutter 中处理对象时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

我在安装flutter时遇到了一些错误

我在颤振中正确运行 multi_select_flutter 小部件时遇到问题

forEach() 循环的 Dart/Flutter 批处理?

Flutter ReorderableListView 与自定义对象

我在 Flutter 中遇到了一个问题:在构建 TextField 时抛出了以下断言,它使我遇到了一个奇怪的问题

我在颤振中实现以下设计时遇到问题