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, ошибка исчезнет, ​​но страница также не откроется. И когда выдавалась ошибка, приложение будет очень "глушить" при ее использовании ~ @ _ @

0 ответов

Другие вопросы по тегам