繁体   English   中英

颤动动画没有持续时间

[英]Flutter Animation no duration

我有一个有状态小部件,我试图将其转换为如下所示的 textStyle。

AnimatedDefaultTextStyle(
                duration: Duration(seconds: 3),
                child: Text(word),
                style: hideWord
                    ? TextStyle(
                        color: Colors.white,
                        fontSize: 40,
                        fontWeight: FontWeight.w300)
                    : TextStyle(
                        color: Colors.black,
                        fontSize: 40,
                        fontWeight: FontWeight.w300),
              ),

然而动画是即时的,不需要定义的 3 秒来完成,实际上根本没有动画,只是从黑色文本到白色文本的变化,而不是在 animationDefaultTextStyle 中设置的持续时间。

我通过点击事件的另一个有状态小部件通过以下方式触发动画。

cardlist[currentCardIndex].hideWord = true;

我在这里缺少什么? 我可以实现 BLOC 并向卡片小部件添加一个侦听器,然后再 setState,但这对于应该是基本触发器的东西来说似乎有点过分了。

如果你想在小部件加载后 3 秒开始你的动画......你可以使用下面的代码......

动画持续时间为一秒

class MyHome extends StatefulWidget {
  @override
  _MyHomeState createState() => _MyHomeState();
}

class _MyHomeState extends State<MyHome> {
  var hideWord = true;

  @override
  void initState() {
    super.initState();
    Future.delayed(Duration(seconds: 3)).then((value) {
      setState(() {
        hideWord = false;
      });
    });
  }


  @override
  Widget build(BuildContext context) {

    return Scaffold(
        backgroundColor: Colors.white,
        body: AnimatedDefaultTextStyle(
          duration: Duration(seconds: 1),
          child: Text("word"),
          style: hideWord
              ? TextStyle(
              color: Colors.white,
              fontSize: 40,
              fontWeight: FontWeight.w300)
              : TextStyle(
              color: Colors.black,
              fontSize: 40,
              fontWeight: FontWeight.w300),
        ));
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM