flutter - 如何使用 flutter 创建动态变量并为其分配数据列表

标签 flutter dynamic-variables

如何创建动态变量以及如何向其添加键、值对值列表?(请阅读添加的评论)

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/

相关文章:

dart - 当其中一些没有前导对象时对齐 ListTile 项目

android - 使用唯一标识符flutter/android识别设备

dart - 如何在 Flutter 中使用手势围绕焦点旋转 Widget?

c++ - 运行时错误 : _block_type_is_valid(phead- nblockuse)

javascript - 如何在匿名函数/闭包中动态访问变量?

flutter - 如何为这两个文本设置相同的对齐方式

flutter |右对齐不起作用

java - 在 Java 中使用动态名称分配变量

php - 在 PHP 中使用带有动态变量名的大括号

Ansible - 名称中包含 host_vars 和字符串的动态变量