颤动中的淡入或不透明

Posted

技术标签:

【中文标题】颤动中的淡入或不透明【英文标题】:fade in or opacity in flutter 【发布时间】:2021-04-03 00:22:31 【问题描述】:

enter code here我有一张图片,它在我的初始屏幕中从底部滑动到中间。 除了slideTransaction,我希望图像随着幻灯片淡入,以便在向上滑动时不透明度从0变为1。 是通过在小部件上使用两次动画来完成的,还是有其他方法?

我只添加了关于小部件的代码,我正在向上滑动,现在想要动画淡入。

这是初始化:

 AnimationController animationController;
  Animation<Offset> animation1;

这是在初始化状态:

 animationController = AnimationController(
      vsync: this,
      duration: Duration(seconds: 2),
    );

 animation1 = Tween<Offset>(
       begin: Offset.zero, end: Offset(0, -3 ))
        .animate(animationController);
    animationController.forward();
    
    
   

以下是小部件:

 Align(
            alignment: Alignment.topCenter,
     child: SlideTransition(
        position: animation1,
        child: Transform.scale(
        scale: 1.5,
        child:Image.asset('assets/images/Capture.PNG'),
        ),),),

【问题讨论】:

【参考方案1】:

simple_animations 包中的 MultiTween 小部件可能是您正在寻找的东西。这是我在多个项目中重复使用的小部件:

class FadeIn extends StatelessWidget 
  final double delay;
  final Widget child;
  FadeIn(this.delay, this.child);

  @override
  Widget build(BuildContext context) 
    final tween = MultiTween<String>()
      ..add("opacity", Tween(begin: 0.0, end: 1.0), Duration(milliseconds: 500))
      ..add("translateY", Tween(begin: 130.0, end: 0.0), Duration(milliseconds: 500), Curves.easeOut);

    return PlayAnimation<MultiTweenValues<String>>(
      delay: Duration(milliseconds: (300 * delay).round()),
      duration: tween.duration,
      curve: Curves.decelerate, // or fastOutSlowIn
      tween: tween,
      child: child,
      builder: (context, child, value) => Opacity(
            opacity: value.get("opacity"),
            child: Transform.translate(
                offset: Offset(0, value.get("translateY")), child: child),
          ),
    );
  

【讨论】:

以上是关于颤动中的淡入或不透明的主要内容,如果未能解决你的问题,请参考以下文章

如何在推送路由颤动上创建淡入淡出过渡?

颤动中的底部导航栏不会在点击选项卡时切换屏幕

IE在JQuery淡入淡出/不透明动画中扭曲文本

在 CCSprite 中淡入图像?

颤动中的 sliverpersistent 标题代表内部的不可见选项卡栏

如何绘制一个 3 个四分之一圆用作颤动中的边框?