Skip to content

Commit 62b54df

Browse files
committed
fix: #123
1 parent f4d620b commit 62b54df

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

lib/src/common/observer_widget.dart

-1
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,6 @@ class ObserverWidgetState<
609609
void _notifyListeners(
610610
Map<BuildContext, M> changeResultMap,
611611
) {
612-
assert(_debugAssertNotDisposed());
613612
if (changeResultMap.isEmpty) return;
614613
final _listeners = innerListeners;
615614
if (_listeners == null || _listeners.isEmpty) return;

test/list_observer_test.dart

+32
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,38 @@ void main() {
317317

318318
scrollController.dispose();
319319
});
320+
321+
// Regression test for https://github.com/fluttercandies/flutter_scrollview_observer/issues/123
322+
testWidgets(
323+
'No exception when ListViewObserverState is disposed during scrolling',
324+
(tester) async {
325+
final scrollController = ScrollController();
326+
final observerController = ListObserverController(
327+
controller: scrollController,
328+
);
329+
330+
Widget widget = getListView(
331+
scrollController: scrollController,
332+
);
333+
widget = ListViewObserver(
334+
child: widget,
335+
controller: observerController,
336+
onObserve: (_) {},
337+
);
338+
await tester.pumpWidget(widget);
339+
340+
observerController.animateTo(
341+
index: 10,
342+
duration: const Duration(seconds: 3),
343+
curve: Curves.easeInOut,
344+
);
345+
346+
await tester.pump();
347+
await tester.pump(const Duration(seconds: 1));
348+
await tester.pumpWidget(Container());
349+
350+
scrollController.dispose();
351+
});
320352
});
321353

322354
group('Cache index offset', () {

0 commit comments

Comments
 (0)