class EventTimeModel with ChangeNotifier {
update() {
notifyListeners();
}
}
class SingleEvent extends StatelessWidget {
...
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (BuildContext context2) => event.timeModel,
child: buildEventColumn());
}
}
class EventList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: events.length,
itemBuilder: (context, index) {
Event event = events[index];
return SingleEvent(event: event)
}
}
EventList
使用ListView
来显示多个单一事件。SingleEvent
使用ChangeNotifierProvider
来提供EventTimeModel
。上下滚动时,我收到了消息
Unhandled Exception: A EventTimeModel was used after being disposed.
E/flutter (10215): Once you have called dispose() on a EventTimeModel, it can no longer be used.
所以我认为一个事件被删除了,因为它一直在屏幕之外。当它应该再次显示时,抛出错误。我该如何解决这个问题?
由于timeModel
存在,因此不能在此处使用创建方法。
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider.value(
value: event.timeModel,
child: buildEventColumn());
}