首页 > 解决方案 > 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>

因此,如您所知,粗体线不起作用。我怎样才能在我自己的扩展中做到这一点?

标签: androidflutterdartnativeextension-methods

解决方案


在扩展中,您不能更改对象的原始值。您可以复制列表,然后对该列表进行各种操作。但是您不能更改列表。


推荐阅读