我在 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 中处理对象时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
我在颤振中正确运行 multi_select_flutter 小部件时遇到问题
forEach() 循环的 Dart/Flutter 批处理?
Flutter ReorderableListView 与自定义对象