我想混合一个包含这样的地图的列表:
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):不支持的操作:只读
有人可以帮忙吗?
答案 0 :(得分:0)
即使您已经解决了问题,也没有可接受的答案,所以我将尝试解释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"));