当我的ElevatedButton将状态更改为禁用时,我想在两个背景 colored颜色 之间创建淡入淡出,我如何才能做到这一点?

final _buttonStyle = ElevatedButton.styleFrom(
  backgroundColor: Colors.white,
  disabledBackgroundColor: Colors.white.withOpacity(0.5),
  animationDuration: const Duration(milliseconds: 0),
  shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
);

我看到有一个AnimationDuration属性,但它似乎只在 colored颜色 更改之间创建了一个延迟.没有可见的动画.

推荐答案

你可以用AnimatedSwitcher美元.首先定义此Out of Build方法:

bool isVisible = false;

然后执行以下操作:

AnimatedSwitcher(
          child: SizedBox(
            width: 100,
            key: UniqueKey(),
            child: ElevatedButton(
              onPressed: () {
                setState(() {
                  isVisible = !isVisible;
                });
              },
              child: Text('click'),
              style: ButtonStyle(
                  splashFactory: InkRipple.splashFactory,
                  overlayColor: MaterialStateProperty.resolveWith(
                  (states) {
                    return states.contains(MaterialState.pressed)
                        ? Colors.grey
                        : null;
                     },
                  ),
                  backgroundColor: MaterialStateProperty.all(
                      isVisible ? Colors.red : Colors.green)),
            ),
          ),
          duration: Duration(milliseconds: 500),
  ),

enter image description here

Flutter相关问答推荐

Riverpod生成器和生成util类

Flutter Go路由深度链接不按预期工作

无法让Riverpod Stream发出新值

Flutter 动画列表一次构建所有项目,而不是仅构建可见的项目

缩短经常使用的行Theme.of(context).colorScheme

脚本具有不受支持的MIME类型(';Text/html';).(messaging/failed-service-worker-registration)

如何管理枚举类型的阻塞事件?

Flutter 渲染HTML和数学(LaTeX和Katex)

Wired Firebase错误-[CLOUD_FIRESTORE/UNAvailable]该服务当前不可用

如何使用providerContainer监听/写入FutureProvider?

如何在列表视图生成器中显示图像

Flutter 包错误:此应用程序使用的是已弃用的 Android 嵌入版本

课程中的访问Provider

在 Flutter 中更改喜欢按钮的 colored颜色

如何将此文本按钮剪辑在堆栈中的圆形头像上方?

Flutter - 展开图标无法正常工作

为什么 appBar 小部件在 flutter 中不是常量

Listview 如何转到下一行/新行?

函数中的变量在 Dart 中应该有什么关键字?

如何在Flutter 中根据其父小部件高度设置图标按钮飞溅半径