在 Tab 单击事件上禁用 TabView 动画?

2024-01-24

我怎样才能禁用TabView动画时Tab in TabBar点击? 我添加了

physics: NeverScrollableScrollPhysics()

对于 TabView 但不适用于 TabBar。

我在用着DefaultTabController.


基于github上关于这个问题的一个很好的答案 https://github.com/flutter/flutter/issues/16474#issuecomment-603977105,它实现了与您正在寻找的类似的东西(但具有bottomNavigationBar)在这里我与您分享另一个解决方法。它包括组合一个DefaultTabController with a PageView, a PageController和一个简单的索引。试试这个。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Tabs with no animation',
      theme: ThemeData.dark(),
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  PageController _pageController;
  final int currentTab = 0;

  @override
  void initState() {
    // TODO: implement initState
    _pageController = PageController(initialPage: currentTab);
    super.initState();
  }

  final List<Tab> myTabs = <Tab>[
    Tab(text: 'One'),
    Tab(
      text: 'Two',
    ),
  ];

  var tabs = [
    TabOne(),
    TabTwo(),
  ];

  @override
  Widget build(BuildContext context) {
    var pageView = PageView(
      controller: _pageController,
      physics: NeverScrollableScrollPhysics(),
      children: tabs,
    );

    return DefaultTabController(
      length: myTabs.length,
      child: Scaffold(
          extendBodyBehindAppBar: true,
          appBar: AppBar(
            backgroundColor: Colors.transparent,
            elevation: 0.0,
            automaticallyImplyLeading: false,
            title: Center(
              child: Container(
                decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(30),
                  color: Colors.grey.shade800,
                ),
                width: 200,
                height: 50,
                child: TabBar(
                  onTap: (index) {
                    _pageController.jumpToPage(index);
                  },
                  unselectedLabelColor: Colors.white,
                  indicator: BoxDecoration(
                      borderRadius: BorderRadius.circular(30),
                      color: Colors.black),
                  tabs: myTabs,
                ),
              ),
            ),
          ),
          body: pageView),
    );
  }
}

class TabOne extends StatelessWidget {
  const TabOne({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Center(child: Text('Tab one')),
    );
  }
}

class TabTwo extends StatelessWidget {
  const TabTwo({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Center(child: Text('Tab two')),
    );
  }
}

这样做,你就会得到一个与TabBarView但没有动画。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Tab 单击事件上禁用 TabView 动画? 的相关文章

随机推荐

  • 为什么内联构造函数和析构函数在 C++ 中不是一个好主意?

    我记得在一本 C 书籍中读过 很久以前 使用内联构造函数和析构函数并不是一个好主意 尤其是对于派生类 我知道内联会导致对象代码膨胀 但是是否有其他设计考虑因素会阻止内联构造函数和析构函数 当然 大多数编译器可能会拒绝内联并继续创建函数体 但
  • NEO4J Cypher 查询:Where 子句中的关系方向错误

    样本数据 示例查询 CREATE a1 A title a1 CREATE a2 A title a2 CREATE a3 A title a3 CREATE b1 B title b1 CREATE b2 B title b2 MATCH
  • gitignore 递归行为在哪里指定?

    参考在线文档 http git scm com docs gitignore 如果模式不包含斜杠 Git 会将其视为 shell glob 模式 并检查相对于 gitignore 文件位置的路径名是否匹配 如果不是来自 gitignore
  • 随机 Python 字典键,按值加权

    我有一本字典 其中每个键都有一个可变长度的列表 例如 d a 1 3 2 b 6 c 0 0 有没有一种干净的方法来获取随机字典键 并按其值的长度加权 random choice d keys 会对键进 行同等的权重 但在上面的情况下我想要
  • “dapper-dot-net”中的交易

    如果我的 DAL 使用 dapper dot net 如何创建交易 我的 C winform 应用程序将在网络中使用 数据将保存到中央 SQL 服务器 我的用例需要使用事务 我可以使用 dapper 来完成此操作 还是需要使用 NHiber
  • Facebook iOS - 检查我的 Facebook 应用程序是否已获得授权

    我的问题是如何检查我的 Facebook 应用程序是否已被用户授权发帖 但找不到任何相关信息 我在用着 Facebook facebook Facebook alloc initWithAppId 1234567 facebook auth
  • PHP“漂亮打印”HTML(不是 Tidy)

    我正在 PHP 中使用 DOM 扩展来构建一些 HTML 文档 并且我希望输出能够很好地格式化 使用换行符和缩进 以便它是可读的 但是 从我所做的许多测试来看 formatOutput true 根本不适用于 saveHTML 仅适用于 s
  • 如何检测 HTML5 中任何元素的大小调整

    监听元素调整大小事件的最佳实践应该是什么 一旦元素的大小发生变化 我想重新定位元素 在我的例子中是 jQuery 对话框 但我现在更感兴趣的是以一般方式监听调整大小事件 而不知道调整大小是如何发生的 它应该很简单 直到我发现一个元素可以通过
  • 通知号码和冰淇淋三明治?

    http developer android com reference android app Notification html number http developer android com reference android a
  • 我如何知道接口何时直接在忽略继承接口的类型中实现?

    出现的问题是当我有一个实现接口的类 并扩展一个实现接口的类时 class Some SomeBase ISome class SomeBase ISomeBase interface ISome interface ISomeBase 由于
  • VS Code 中的 Hugo 模板格式

    VS Code 中的自动格式通过删除缩进使我的代码无法读取 我不知道如何仅针对车把关闭此功能 Input range if if
  • 是什么原因导致错误“java.security.InvalidKeyException:参数丢失”? [复制]

    这个问题在这里已经有答案了 我正在尝试使用 AES 加密和解密字符串 但出现错误 我不知道如何解决 这是代码 public class EncryptionTest public static void main String args S
  • Lawnchair .nuke() 在填满我的存储配额后无法工作

    我在用着草坪椅 http westcoastlogic com lawnchair 使用我的 Web 客户端 Firefox 13 0 的 dom 适配器 存储持久数据并已达到存储配额 Console log 说 Persistent st
  • 用于图像哈希的 Flutter 计算函数

    hii 我正在尝试实现计算功能 我正在尝试使用 image picker 插件通过相机单击图像 然后我试图获取图像文件的哈希摘要 由于它是一个非常密集的操作 我尝试使用计算功能但无法这样做 这就是我到目前为止所做的 final File p
  • Htaccess缓存问题

    这让我彻底疯了 我一直在这个新安装的服务器上使用 URL 重写来自定义 URL 但似乎我在 htaccess 中编写的任何 URL 重写规则都将永远被考虑在内 Example RewriteRule dashboard calendar c
  • Node.js 应用程序在 Heroku 上不断崩溃,并给出错误 Boot timeout

    我正在开发一个示例 node js 应用程序 它在本地运行良好 node index js 但是 当我将其推送到 Heroku 实例时 它崩溃并出现以下错误 2017 10 23T06 08 07 000000 00 00 app api
  • sqlalchemy 中的点类型?

    我在 Postgres 中发现了关于 Point 类型的信息 http www postgresql org docs current interactive datatype geometric html http www postgre
  • 如何序列化邮件消息?

    当尝试使用 los 格式化程序序列化 Gmail 消息时 我收到以下信息 错误 Sys WebForms PageRequestManagerServerErrorException 序列化 System Net Mail MailMess
  • 如果有多个iis服务器,如何实现SignalR?

    使用 SignalR 时是否支持 iis 节点集群 或者我需要一些第三方消息总线吗 还没有 但他们正在努力 计划发布 0 4 版本 准备就绪后 更多信息可能会在 wiki 中发布 SignalR 和 Webfarms http github
  • 在 Tab 单击事件上禁用 TabView 动画?

    我怎样才能禁用TabView动画时Tab in TabBar点击 我添加了 physics NeverScrollableScrollPhysics 对于 TabView 但不适用于 TabBar 我在用着DefaultTabControl