如何创建动态变量以及如何向其添加键、值对值列表?(请阅读添加的评论)
Map sample = Map(); // creating sample named dynamic variable
List<TechData> data = [
{"title": 'Android', "date": '10/01/2019'},
{"title": 'Flutter', "date": '10/01/2019'},
{"title": 'Java', "date": '30/10/2019'},
];
sample['Android'] = [{}]; // initializing the dynamic variable
for (var i = 0; i < data.length; i++) { // trying to add value using .add()
if (data[i].title == 'Android') {
sample['Android'].add(data[i]);
}
}
使用 .add() 添加值时会导致如下错误。
Exception has occurred.
TypeError (type 'TechData' is not a subtype of type 'Map' of 'value')
任何人都可以提供任何解决方案来解决此错误吗?
最佳答案
Map sample; // declared but not initialized
sample['Android'] = 'Android'; // gives you error
如果您想使用示例
,只需将声明替换为以下代码:
Map sample = Map();
或
Map<String, dynamic> sample = Map<String, dynamic>();
两种方法是相同的,唯一的变化是第二种方法仅将 String
作为 key
而第一种方法将任何内容作为键(dynamic
).
更新:
上面的 map 可以用作任何东西的存储,因为 map 的值
保持动态
。任何类型的对象都可以作为值传递给此映射。唯一需要担心的是,在检索值时,请确保将其强制转换为与作为值传递的对象相同的对象。
例如:
map['numbers'] = [1,2,3,4]; // will work
map['strings'] = ['1','2','3','4']; // will work as well.
但是当你检索值时,它将如下所示:
var listOfNumbers = map['数字'];
listOfNumbers
将是一个列表,请确保将其转换为 int
。
var listOfNumbers = map['numbers'].cast<int>();
关于flutter - 如何使用 flutter 创建动态变量并为其分配数据列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59357251/