无法写入包含地图的列表

时间:2019-02-06 08:21:44

标签: flutter

我想混合一个包含这样的地图的列表:

initTask() async {

   List tasks = await ourDb.rawQuery("SELECT * FROM level1");
   Random random = new Random();
   tasks.shuffle(random);

}

然后出现此错误:

E / flutter(15953):[错误:flutter / shell / common / shell.cc(184)] Dart错误:未处理的异常: E / flutter(15953):不支持的操作:只读

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

即使您已经解决了问题,也没有可接受的答案,所以我将尝试解释pskink在评论中提供的解决方案。

通常,数据库返回的数据是不可变的,因此通过执行List tasks = await ourDb.rawQuery("SELECT * FROM level1");,您将获得不可修改的列表引用。为了能够对其进行修改,您需要从原始列表中创建一个新的列表对象。

您可以使用List.ofList.from来生成一个新的可修改列表对象,其中包含查询中的所有项目。

List tasks = List.from(await ourDb.rawQuery("SELECT * FROM level1"));
List tasks = List.of(await ourDb.rawQuery("SELECT * FROM level1"));