颤动:使用带有TabBar和TabBarView的Navigator

时间:2017-08-06 02:34:19

标签: flutter

我试图了解班级导航器。

导航器路线似乎总是返回一个新的小部件,但如果我想管理TabBarTabBarView,以便在点击或滑动时每个选项卡将被推送到导航器堆栈,我不知道该怎么做。

在更一般的情况下,我是否可以在不创建新窗口小部件的情况下对路径更改做出反应,而是采取其他操作,例如滚动到listView中的特定项目?

我每次尝试重新创建整个应用程序结构,但这样做我没有很好的默认动画,而且对我来说也不是一个好方法。

1 个答案:

答案 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,以便更好地了解如何实施您的想法。