flutter - 无法写入包含地图的列表
问题描述
我想混合一个包含这样的地图的列表:
initTask() async {
List tasks = await ourDb.rawQuery("SELECT * FROM level1");
Random random = Random();
tasks.shuffle(random);
}
然后我得到了这个错误:
E/flutter (15953): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
E/flutter (15953): Unsupported operation: read-only
谁能帮忙?
解决方案
即使您已经解决了您的问题,也没有可接受的答案,所以我将尝试解释pskink在评论中提供的解决方案。
通常,数据库返回的数据是不可变的,因此List tasks = await ourDb.rawQuery("SELECT * FROM level1");
您将获得不可修改的列表引用。为了能够修改它,您需要从原始列表中创建一个新的列表对象。
您可以使用List.of
或List.from
生成一个新的可修改列表对象,其中包含查询中的所有项目。
List tasks = List.from(await ourDb.rawQuery("SELECT * FROM level1"));
List tasks = List.of(await ourDb.rawQuery("SELECT * FROM level1"));
推荐阅读
- tensorflow - 如何从 HuggingFace 加载 Wav2Vec2 TF 模型
- typescript - 我可以在不导入实际模块的情况下使用来自 node_modules 的类型声明文件吗?
- pandas - 如何在 pandas 的数据框中划分值?
- java - 算法不适用于字符串解码方式——,leetcode 91。——我需要解决方案的输出而不是计数。附代码
- laravel - 如何在 Laravel 中使用 Zebra TLP 2844 打印机
- oop - 为 Web 应用程序生成类图或 DFD 图
- python - 输出值接近输入值的行
- amazon-web-services - 如何使用 AppSync 从父对象的每个项目中返回嵌套项目数组?
- html - 如何在 HTML(文章正文)中嵌入反应组件?
- java - 在选择时实现微调器