android - Dart 使用自己的扩展方法更改变量值
问题描述
我试图使用自己的扩展名删除列表的元素,但出现错误。此错误表示扩展名仅可读。
这是我的扩展
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>
因此,如您所知,粗体线不起作用。我怎样才能在我自己的扩展中做到这一点?
解决方案
在扩展中,您不能更改对象的原始值。您可以复制列表,然后对该列表进行各种操作。但是您不能更改列表。
推荐阅读
- r - tmap:在光栅图图例中的键周围添加矩形框
- c - 使用 Mach 信号量替代进程间匿名信号量
- apache-kafka - 为 Flink 集群中的插件添加自定义依赖项
- html - 放大时垂直导航栏不会填满屏幕的 100% 高度
- awk - 从 2 个文件中划分列值以匹配 id 和 header
- selenium - 在登录页面签名按钮在自动化时不可点击
- python - 如何仅置换 numpy 2d-array 的某些条目?
- python - 什么是 tensorflow 中的日志记录级别以及为什么人们在笔记本中使用它?
- discord - 匹配单词时将消息内容发送到频道
- ios - 以全屏视频为主要内容的 ios scrollview