不透明度的 Flutter 动画可见性

Flutter Animate Visibility with opacity

Flutter 可见性小部件允许隐藏和禁用其中包含的所有内容。但是,我想为不透明度设置动画并调用可见性。使用 Visibility 小部件会覆盖动画不透明度。根据我对其他语言的了解,这是意料之中的事情。

有没有一种简单方便的方法来实现动画的不透明度和可见性。 IT 会让生活比设置计时器更简单。

下面的例子使用了 hasAccess 的 bool,使用 Provider 作为状态管理。

child: Stack(
  children: [

  Visibility(
    visible: hasAccess ? false : true,
    child: AnimatedOpacity(
      duration: Duration(milliseconds: 400),
      opacity: hasAccess ? 0 : 1,
      child: Text('Not logged in'),
  )), 

  Visibility(
    visible: hasAccess ? true : false,
    child: AnimatedOpacity(
      duration: Duration(milliseconds: 400),
      opacity: hasAccess ? 1 : 0,
      child: Text('Is logged in'),
   ),
  ), 
 ],
)

此示例中可见性的作用是从特定小部件及其子部件中删除所有指针事件和 activity。这可以通过多种不同的方式实现,而无需使用可见性小部件。

IgnorePointer class 允许删除所有指针和触摸事件。 https://api.flutter.dev/flutter/widgets/IgnorePointer-class.html

这可以与 AnimatedOpacity 协调使用,因为它是父项或子项。