我试图了解班级导航器。
导航器路线似乎总是返回一个新的小部件,但如果我想管理TabBar
和TabBarView
,以便在点击或滑动时每个选项卡将被推送到导航器堆栈,我不知道该怎么做。
在更一般的情况下,我是否可以在不创建新窗口小部件的情况下对路径更改做出反应,而是采取其他操作,例如滚动到listView
中的特定项目?
我每次尝试重新创建整个应用程序结构,但这样做我没有很好的默认动画,而且对我来说也不是一个好方法。
答案 0 :(得分:0)
您可以使用WillPopScope小部件及其onWillPop来捕获后退按钮压力并自行处理。在此处查找更多信息https://docs.flutter.io/flutter/widgets/WillPopScope-class.html
在更一般的情况下,我可以在不创建的情况下对路线更改做出反应 一个新的小部件,而是采取另一个动作,如滚动到一个 listView中的特定项目?
这看起来更具体而不是一般。但是,您需要在ScrollController
中设置ListView
,然后将列表滚动到所需的位置。一个简单的示例函数返回顶部:
class MyFancyClass extends StatelessWidget{
...
ScrollController _scrollController;
...
@override
Widget build(BuildContext Context){
return ....
new ListView(
...
controller: _scrollController,
...
}
void _toTop() {
_scrollController.animateTo(
0.0,
duration: const Duration(milliseconds: 500),
curve: Curves.ease,
);
}
检查https://docs.flutter.io/flutter/widgets/ScrollController-class.html以获取更多详细信息和行为。如果你想让后退按钮带你到顶部:
Widget build(BuildContext context) {
return new WillPopScope(
onWillPop: _onTop,
child:
...
),
);
}
关于标签行为,我建议您阅读https://docs.flutter.io/flutter/material/TabController-class.html,以便更好地了解如何实施您的想法。