首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >颤动TabBarView的动画持续时间

问颤动TabBarView的动画持续时间
EN

Stack Overflow用户
提问于 2019-06-16 13:29:53
回答 2查看 2.7K关注 0票数 1

在Flutter中,我有以下问题。

我想控制TabBarView的动画速度(过渡持续时间)。在TabBar单击期间,内容正文从左向右滑动。我希望这是即时的。与Twitter应用非常相似,底部有一个主要的TabBar图标。

有没有办法控制TabVarView的动画(持续时间)?

EN

回答 2

Stack Overflow用户

发布于 2021-10-28 21:10:39

您可以控制滚动动画的一般物理效果。

代码语言:javascript
复制
TabBarView(
  physics: CustomTabBarViewScrollPhysics(),

控制滚动行为:

代码语言:javascript
复制
class CustomTabBarViewScrollPhysics extends ScrollPhysics {
  const CustomTabBarViewScrollPhysics({ScrollPhysics? parent})
      : super(parent: parent);

  @override
  CustomTabBarViewScrollPhysics applyTo(ScrollPhysics? ancestor) {
    return CustomTabBarViewScrollPhysics(parent: buildParent(ancestor)!);
  }

  @override
  SpringDescription get spring => const SpringDescription(
        mass: 50,
        stiffness: 100,
        damping: 0.8,
      );
}

你也应该能够计算持续时间与质量,刚度,阻尼,但我相信拥有这些选项更适合你的问题。Source

票数 2
EN

Stack Overflow用户

发布于 2019-06-17 02:53:38

你不能用TabBar直接做到这一点!您应该创建一个CustomTab并在其上添加一个“Inkwell”。您应该将墨水井的onTap参数设置为:

代码语言:javascript
复制
() = tabController.animateTo(0, duration: Duration(milliseconds: 0));'

所以它应该看起来像这样

代码语言:javascript
复制
Widget _buildTabItem({
  int index,
  ValueChanged<int> onPressed,
}) {
  return Expanded(
    child: Container(
      child: Material(
        type: MaterialType.transparency,
        child: InkWell(
          onTap: () => onPressed(index),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              /// Icon and text here
            ],
          ),
        ),
      ),
    ),
  );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56616344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档