【问题标题】:'positions.isNotEmpty': PageController.page cannot be accessed before a PageView is built with it. Carousel Flutter'positions.isNotEmpty':PageController.page 在使用它构建 PageView 之前无法访问。旋转木马颤动
【发布时间】:2020-04-20 09:38:46
【问题描述】:

我正在尝试在 BottomNavigationBar 中调用一个列表((位于构建(BuildContext 上下文)小部件之外))。该列表包含一个有状态的小部件(包含一个轮播幻灯片)。因此,当我重新运行我的项目并滚动页面时,我会不断收到此错误。它说

E/flutter ( 6022): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: 'package:flutter/src/widgets/page_view.dart': Failed assertion: line 180 pos 7: 'positions.isNotEmpty': PageController.page cannot be accessed before a PageView is built with it.
E/flutter ( 6022): #0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:42:39)
E/flutter ( 6022): #1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:38:5)
E/flutter ( 6022): #2      PageController.page (package:flutter/src/widgets/page_view.dart:180:7)
E/flutter ( 6022): #3      CarouselState.initState.<anonymous closure> (package:carousel_pro/src/carousel_pro.dart:110:24)
E/flutter ( 6022): #4      _rootRunUnary (dart:async/zone.dart:1192:38)
E/flutter ( 6022): #5      _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter ( 6022): #6      _CustomZone.runUnaryGuarded (dart:async/zone.dart:987:7)
E/flutter ( 6022): #7      _CustomZone.bindUnaryCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1024:26)
E/flutter ( 6022): #8      _rootRunUnary (dart:async/zone.dart:1196:13)
E/flutter ( 6022): #9      _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter ( 6022): #10     _CustomZone.bindUnaryCallback.<anonymous closure> (dart:async/zone.dart:1008:26)
E/flutter ( 6022): #11     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398:19)
E/flutter ( 6022): #12     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429:5)
E/flutter ( 6022): #13     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)

代码如下

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您可以在对PageController进行任何操作之前检查它是否有任何页面。 这样做:

    pageController.hasClients ? pageController.page(2) : pagecontroller.initialPage;

    如果您复制并粘贴代码而不是屏幕截图,我会很有帮助。

    【讨论】:

      【解决方案2】:

      PageController 所属的PageView 将内置在 build 函数中,因此在 initState 或之前的任何内容构建之前,您无法访问页面

      你必须给PageController添加一个监听器来监听滚动变化

      【讨论】:

      • 如何向 Pagecontroller 添加监听器?
      • 我也有同样的问题。
      猜你喜欢
      • 2021-03-25
      • 1970-01-01
      • 2020-07-18
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多