我正在构建一个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((_) {})
但也不管用
1条答案
按热度按时间jm2pwxwz1#
我已经解决了那个问题。
我让scrollController在PageView的onPageChanged处滚动,现在运行良好。
因为当onPageChanged被调用并且索引在tab2中时,scrollController已经被附加。