【问题标题】:Scrollcontroller in flutter error Exception has occurredScrollcontroller in flutter error 发生异常
【发布时间】:2019-06-08 14:34:30
【问题描述】:

我有两个屏幕,第一个从 wordpress 获取所有帖子 最后一个获取所有视频,我使用 ScollController 和 ListView 来滚动数据

查看我的代码:

ScrollController _scrollController;

@override
  void initState() {
    _scrollController = new ScrollController();
    _scrollController.addListener(() {
      print(_scrollController.position.pixels);
      if (_scrollController.position.pixels ==
          _scrollController.position.maxScrollExtent - 10) {
        // if we are the bottom of the page
        fetchPosts();
        //millisecs += 1500;
        //super.initState();
      }
      super.initState();
    });
  }

  @override
  void dispose() {
    _scrollController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) { ....

当我在屏幕一到二或屏幕二到一之间切换时

我得到这个错误:

    Exception has occurred.
FlutterError (A ScrollController was used after being disposed.
Once you have called dispose() on a ScrollController, it can no longer be used.)

跟踪代码: image error

在为 x86 构建的 Android SDK 上以调试模式启动 lib\main.dart... 构建 build\app\outputs\apk\debug\app-debug.apk。 D/EGL_emulation(8157):eglMakeCurrent:0xeeebd340:ver 3 1(tinfo 0xeee9b1d0) E/eglCodecCommon(8157):glUtilsParamSize:未知参数 0x000082da E/eglCodecCommon(8157):glUtilsParamSize:未知参数 0x000082da I/Choreographer(8157):跳过49帧!应用程序可能在其主线程上做了太多工作。 D/EGL_emulation(8157):eglMakeCurrent:0xeef21ce0:ver 3 1(tinfo 0xe6f286b0) D/ ( 8157): HostConnection::get() 新主机连接建立 0xe7123880, tid 8184 D/EGL_emulation(8157):eglMakeCurrent:0xeeebd340:ver 3 1(tinfo 0xe7103370) 我/颤振(8157):_morePages:假 I/颤振(8157):状态代码:200 我/颤振(8157):══╡基金会图书馆发现异常╞═════════════════════════════════════════════ ══════════════════════ I/flutter (8157):在为 ScrollController 分派通知时引发以下断言: I/flutter(8157):'package:flutter/src/widgets/framework.dart':断言失败:第 1003 行 pos 12: 我/颤振(8157):'_debugLifecycleState == _StateLifecycle.created':不正确。 我/颤振(8157): I/flutter (8157):要么断言表明框架本身有错误,要么我们应该提供大量 I/flutter (8157):此错误消息中的更多信息可帮助您确定和修复根本原因。 I/flutter (8157):在任何一种情况下,请通过在 GitHub 上提交错误来报告此断言: 我/颤振(8157):https://github.com/flutter/flutter/issues/new?template=BUG.md 我/颤振(8157): I/flutter (8157):当异常被抛出时,这是堆栈: I/flutter (8157): #2 State.initState (package:flutter/src/widgets/framework.dart:1003:12) 我/颤振(8157):#3 _PostsPage.initState。 (包:flutter_wp2019/ui/PostsLatest.dart:42:13) I/flutter (8157): #4 ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:208:21) I/flutter (8157): #5 ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:208:21) I/flutter (8157): #6 ScrollPosition.notifyListeners (package:flutter/src/widgets/scroll_position.dart:692:11) I/flutter (8157): #7 ScrollPosition.setPixels (package:flutter/src/widgets/scroll_position.dart:218:9) 我/颤振(8157):#8 ScrollPositionWithSingleContext.setPixels (包:flutter/src/widgets/scroll_position_with_single_context.dart:84:18) 我/颤振(8157):#9 ScrollPositionWithSingleContext.applyUserOffset (包:flutter/src/widgets/scroll_position_with_single_context.dart:127:5) I/flutter (8157): #10 ScrollDragController.update (package:flutter/src/widgets/scroll_activity.dart:373:14) I/flutter (8157): #11 ScrollableState._handleDragUpdate (package:flutter/src/widgets/scrollable.dart:470:12) 我/颤振(8157):#12 DragGestureRecognizer.acceptGesture。 (包:flutter/src/gestures/monodrag.dart:176:48) I/flutter (8157): #13 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24) I/flutter(8157):#14 DragGestureRecognizer.acceptGesture(包:flutter/src/gestures/monodrag.dart:176:9) I/flutter (8157): #15 GestureArenaManager._resolveInFavorOf (package:flutter/src/gestures/arena.dart:263:12) I/flutter (8157): #16 GestureArenaManager._resolve (package:flutter/src/gestures/arena.dart:222:9) I/flutter (8157): #17 GestureArenaEntry.resolve (package:flutter/src/gestures/arena.dart:52:12) I/flutter (8157): #18 OneSequenceGestureRecognizer.resolve (package:flutter/src/gestures/recognizer.dart:166:13) I/flutter(8157):#19 DragGestureRecognizer.handleEvent(包:flutter/src/gestures/monodrag.dart:154:11) I/flutter (8157): #20 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:73:12) I/flutter (8157): #21 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:11) I/flutter (8157): #22 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:180:19) I/flutter (8157): #23 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:158:22) I/flutter (8157): #24 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7) 我/颤振(8157):#25 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (包:flutter/src/gestures/binding.dart:101:7) 我/颤振(8157):#26 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (包:flutter/src/gestures/binding.dart:85:7) I/flutter (8157): #27 _invoke1 (dart:ui/hooks.dart:168:13) I/flutter (8157): #28 _dispatchPointerDataPacket (dart:ui/hooks.dart:122:5) I/flutter(8157):(从 _AssertionError 类中省略了 2 帧) 我/颤振(8157): I/flutter (8157):ScrollController 发送通知是: I/flutter(8157):ScrollController#bcc47(一个客户端,偏移量 21.4) 我/颤振(8157):══════════════════════════════════════════════════════════ ══════════════════════════════════════════════════ ═══════ I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 I/chatty (8157): uid=10083(com.example.flutterwp2019) 1.ui 相同 16 行 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 I/zygote (8157):做部分代码缓存收集,代码=29KB,数据=23KB I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 I/chatty (8157): uid=10083(com.example.flutterwp2019) 1.ui 相同 1 行 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 I/zygote(8157):代码缓存收集后,代码=29KB,数据=23KB I/zygote(8157):将代码缓存容量增加到 128KB I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 I/chatty (8157): uid=10083(com.example.flutterwp2019) 1.ui 相同 11 行 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 I/zygote (8157):做部分代码缓存收集,代码=59KB,数据=40KB I/zygote(8157):代码缓存收集后,代码=59KB,数据=40KB I/zygote (8157):将代码缓存容量增加到 256KB 我/颤振(8157):30.00837053571422 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):42.86551339285711 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):55.72265625 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):71.41741071428567 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):88.56863839285711 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):105.71986607142856 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):120.24285714285713 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):117.38013392857141 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):110.24843749999997 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):93.09720982142858 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):63.0888392857143 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):23.11116071428569 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 I/颤振(8157):0.0 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):1.4313616071428896 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):8.58816964285711 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):24.006696428571445 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):41.15792410714289 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):64.00948660714289 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):85.4296875 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):108.28125 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):120.24285714285713 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):2.8376116071428896 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):7.131696428571445 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):11.42578125 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):18.557477678571445 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):24.28292410714289 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):39.977678571428555 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):57.12890625 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):77.14285714285717 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):97.13169642857144 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):115.71428571428572 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):120.24285714285713 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):_morePages:假 I/颤振(8157):状态代码:200 我/颤振(8157):_morePages:假 我/颤振(8157):状态代码:400 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 I/chatty (8157): uid=10083(com.example.flutterwp2019) 1.ui 相同 22 行 I/flutter(8157):引发了另一个异常:'package:flutter/src/widgets/framework.dart':断言失败:行 1003 位置 12:'_debugLifecycleState == _StateLifecycle.created':不是 真的。 我/颤振(8157):_morePages:假 我/颤振(8157):状态代码:200

image error

谢谢提前

【问题讨论】:

  • 哪一行指向堆栈跟踪作为异常的原因?
  • flutter run -v 之类的如何做一个跟踪代码?
  • 应该没什么可做的。只需发布完整的错误输出。

标签: dart flutter


【解决方案1】:

super.initState() 位置错误

@override
  void initState() {
    super.initState(); // <<< added

    _scrollController = new ScrollController();
    _scrollController.addListener(() {
      print(_scrollController.position.pixels);
      if (_scrollController.position.pixels ==
          _scrollController.position.maxScrollExtent - 10) {
        // if we are the bottom of the page
        fetchPosts();
        //millisecs += 1500;
        //super.initState();
      }
      // super.initState(); // <<< removed
    });

  }

【讨论】:

  • 我会努力的,非常感谢 Günter Zöchbauer 对我的帮助
  • 您能否使用您现在拥有的代码更新您的答案。旧代码肯定是错误的,因为super.initState() 只有在_scrollController 调用监听器时才会调用。
  • 怎么处置@override void dispose() { _scrollController.dispose(); super.dispose(); }
  • 感谢 Günter Zöchbauer,现在它工作正常,但我想问你是否应该重写 dispose 方法来处理 state 和 ScrollController ?
  • 非常感谢 Günter Zöchbauer
猜你喜欢
  • 2020-01-29
  • 2019-05-18
  • 2021-08-22
  • 2021-12-02
  • 2020-08-09
  • 1970-01-01
  • 2020-08-04
  • 2012-07-31
  • 2021-11-22
相关资源
最近更新 更多