我想混合一个包含这样的地图的列表:
initTask() async {
List tasks = await ourDb.rawQuery("SELECT * FROM level1");
Random random = Random();
tasks.shuffle(random);
}
Run Code Online (Sandbox Code Playgroud)
然后我收到了这个错误:
E/flutter (15953): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
E/flutter (15953): Unsupported operation: read-only
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
即使您已经解决了问题,也没有公认的答案,所以我将尝试解释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"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
751 次 |
| 最近记录: |