为什么我的ScrollController在来回导航或重新启动时会引发错误?

问题描述

我有一个ListView.builder(),它具有一个将在animateto(index: 50,......)方法buidler进行操作的控制器,它可以完美地工作,可以制作动画并转到索引,但是唯一的问题是当我转到另一个屏幕并返回到listView.builder()或重新启动时,会引发错误

'package:Flutter/src/widgets/scroll_activity.dart': Failed assertion: line 613 pos 15: 'to != null': is not true.

据我了解,animateto()中有一个方法为null。这是ScrollController()

ScrollController scrollController = ScrollController();

scrollController.animateto(
       scrollController.position.maxScrollExtent,duration: Duration(milliseconds: 1000),curve: Curves.eaSEOut);

更新

我现在确定是引发该错误的是scrollController的位置,我检查了库,并且to参数是它将设置动画的位置。

修改 ListView.builder()代码

ListView.builder(
                    controller: scrollController,reverse: true,itemCount: snapshot.data.documents.length,itemBuilder: (context,i) {
                      var link = snapshot.data.documents[i].data['Link'];
                      var uploader =
                          snapshot.data.documents[i].data['Uploader'];
                      var likes = snapshot.data.documents[i].data['Likes'];
                      var like = likes.toString();
                      bool liked;
                      if (int.parse(like) > 0) {
                        liked = true;
                      } else if (int.parse(like) == 0) {
                        liked = false;
                      }
                      final videoPlayerController =
                          VideoPlayerController.network(link);
                      chewieController = ChewieController(
                        allowMuting: true,autoInitialize: true,deviceOrientationsAfterFullScreen: orientation,allowFullScreen: true,aspectRatio: 16 / 9,videoPlayerController: videoPlayerController,);
                      scrollController.animateto(
                          scrollController.position.maxScrollExtent,curve: Curves.eaSEOut);
                      return link != null
                          ? SingleChildScrollView(
                              child: Column(
                                children: [
                                  Chewie(
                                    controller: chewieController,),..............................

完全错误

    ══╡ EXCEPTION CAUGHT BY FOUNDATION LIBRARY ╞════════════════════════════════════════════════════════
The following assertion was thrown while dispatching notifications for VideoPlayerController:
setState() called after dispose(): _MaterialControlsstate#da2c1(lifecycle state: defunct,not
mounted)
This error happens if you call setState() on a State object for a widget that no longer appears in
the widget tree (e.g.,whose parent widget no longer includes the widget in its build). This error

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...