优雅且最简单的方式来监控List 的变化,包括列表本身及其中元素的变化
我需要在向列表中添加或移除对象时收到通知,同时也要在其中一个对象被修改时收到通知:
var myList = [1, 2, 3];
myList.add(4); -> need a notification
myList[1] = 0; -> need a notification
var myVar = myList[2];
myVar = 3; -> need a notification
我在想是否有可能在不安装第三方组件的情况下实现,例如:
https://flutter-it.dev/documentation/listen_it/collections/list_notifier
或避免编写专用方法,例如:
void addItem(int number) {
myList.add(number);
notifyListeners();
}
解决方案
Dart平台库中没有会通知变更的列表。你需要一些额外的东西。
在各种包中有大量的“可观察列表”实现。我不熟悉它们,也不知道是否存在既广为人知又得到支持的版本,但此类列表的任何版本都应该覆盖前两个示例。
你的第三个示例是不可行的。
var myVar = myList[2];
myVar = 3; // -> need a notification
在这里,你根本没有改变列表。你只是把列表中的一个值拷贝到本地变量中。然后你修改那个本地变量,这既不会改变列表,也不会改变列表中原来的对象。列表及其内容完全保持不变。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。