首页 > 解决方案 > 无法写入包含地图的列表

问题描述

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

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

谁能帮忙?

标签: flutter

解决方案


即使您已经解决了您的问题,也没有可接受的答案,所以我将尝试解释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"));

推荐阅读