Flutter: ошибка «При обработке жеста возникла следующая ошибка StackOverflowError» при использовании NotificationListener
Я использую NotificationListener в своем приложении flutter для функции «TabBarView in a PageView», но это дает мне эту ошибку:
════════ Exception caught by gesture ═══════════════════════════════════════════
The following StackOverflowError was thrown while handling a gesture:
Stack Overflow
When the exception was thrown, this was the stack
#0 State.widget
package:flutter/…/widgets/framework.dart:1062
#1 _GlowingOverscrollIndicatorState._handleScrollNotification
package:flutter/…/widgets/overscroll_indicator.dart:245
#2 NotificationListener._dispatch
package:flutter/…/widgets/notification_listener.dart:206
#3 ViewportNotificationMixin.visitAncestor
package:flutter/…/widgets/scroll_notification.dart:31
#4 Element.visitAncestorElements
package:flutter/…/widgets/framework.dart:3966
...
Handler: "onDown"
Recognizer: HorizontalDragGestureRecognizer#599de
start behavior: start
А мой демонстрационный код выглядит так:
PageView(
controller: _parentPageCtrl,
children: [
NotificationListener(
onNotification: (notification) {
if (notification is ScrollStartNotification) {
_dragStartDetails = notification.dragDetails;
}
if (notification is OverscrollNotification) {
_drag = _parentPageCtrl.position.drag(_dragStartDetails!, () {});
_drag!.update(notification.dragDetails!);
}
if (notification is ScrollEndNotification) {
_drag?.cancel();
}
return true;
},
child: PageView(
children: _pages,
),
),
Scaffold(),
],
),
Но если я удалю "
_drag?.cancel();
"в операторе if
notification is ScrollEndNotification
, ошибка исчезнет, но страница также не откроется. И когда выдавалась ошибка, приложение будет очень "глушить" при ее использовании ~ @ _ @