ChangeNotifierProvider inside ListView in flutter


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());
}

最新更新