【发布时间】:2021-09-18 02:36:51
【问题描述】:
我试图使用我自己的扩展程序删除列表中的元素,但出现错误。此错误表示扩展程序只能读取。
这是我的扩展
extension ToListExtention on List {
List toDatatable() {
List columns = [];
List rows = [];
(this.first as Map).forEach((key, value) {columns.add(key);});
this.forEach((element) {
rows.add((element as Map).values);
});
**this.clear();**
return [columns,rows];
}
}
这是我得到的错误
E/flutter (24973): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Unsupported operation: read-only
E/flutter (24973): #0 QueryResultSet.length= (package:sqflite_common/src/collection_utils.dart:109:5)
E/flutter (24973): #1 ListMixin.clear (dart:collection/list.dart:342:10)
E/flutter (24973): #2 ToListExtention.toDatatable (package:dbdeneme/Extentions.dart:9:10)
E/flutter (24973): #3 _AnasayfaState.build.<anonymous closure>.<anonymous closure> (package:dbdeneme/main.dart:58:27)
E/flutter (24973): #4 _rootRunUnary (dart:async/zone.dart:1362:47)
E/flutter (24973): #5 _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (24973): <asynchronous suspension>
因此,如您所知,粗体线不起作用。如何在我自己的扩展中做到这一点?
【问题讨论】:
-
这取决于
List。一些List对象受到保护,例如const列表或List尚未定义为growable(因为我们不允许更改其大小)。在您的情况下,List实际上是一个只读列表,这意味着不允许更改列表的操作。
标签: android flutter dart native extension-methods