首页 文章

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

提问于
浏览
0

我正在尝试理解类导航器 .

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

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

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

1 回答

  • 0

    您可以使用WillPopScope小部件及其onWillPop来捕获后退按钮压力并自行处理 . 在此处查找更多信息https://docs.flutter.io/flutter/widgets/WillPopScope-class.html

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

    这看起来更具体而不是一般 . 但是,您需要在 ListView 中设置 ScrollController 并让它将列表滚动到所需的位置 . 一个简单的示例函数返回顶部:

    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以更好地了解如何实现您的想法 .

相关问题