flutter 如何使scrollController在切换到不同的导航选项卡后附加到滚动条

iq0todco  于 2023-05-23  发布在  Flutter
关注(0)|答案(1)|浏览(153)

我正在构建一个Flutter移动的应用程序。此页面中有一个底部导航栏和2个选项卡。如tab1:

表2:

在表1中有一个按钮
在tab2中有一个SingleChildScrollView(代码如下)
我想当我点击按钮,应用程序切换到tab2和滚动SingleChildScrollView到底部。
表1:

BlockImgButton(key:UniqueKey(),Icons.chat_outlined, _unReadMessageNumber,
    onPress: (){
          print("chat_outlined clicked!");
          setState(() {
            //switch to tab2
            (_bottomNavigationKey.currentWidget as BottomNavigationBar).onTap!(1);
           //controll slide
            _scrollController.animateTo(_scrollController.position.maxScrollExtent, duration: Duration(milliseconds: 500), curve: Curves.ease);

      });

}),

表2:

Scrollbar(
    controller: _scrollController,
    thumbVisibility: true,
    child:SingleChildScrollView(
      controller: _scrollController,
      child:
      NavigationRail(
        //some contents in here
      )
    )
)

现在当我点击tab1中的按钮时,它可以成功切换到tab2,但不能使滚动条滑动。
Debug信息输出:

"SingleChildScrollView" ScrollController not attached to any scroll views.

我猜这是因为scrollController在当前屏幕位于tab1时无法找到并附加到SingleChildScrollView。而是如何解决。
顺便说一句,我试过了

WidgetsBinding.instance.addPostFrameCallback((_) {})

但也不管用

jm2pwxwz

jm2pwxwz1#

我已经解决了那个问题。
我让scrollController在PageView的onPageChanged处滚动,现在运行良好。
因为当onPageChanged被调用并且索引在tab2中时,scrollController已经被附加。

相关问题