flutter - 如何在 Flutter 中禁用 SnackBar 的淡入/淡出动画?

您好,我正在展示一个带有按钮的 SnackBar。当用户按下按钮时,它应该突出显示该按钮。因此,我让它在按下特定按钮的地方显示一个新的 SnackBar。 但是,每当用户点击按钮时,新的 SnackBar 就会出现这种淡入淡出的动画效果,这让它看起来像是一个故障。

那么如何在 SnackBar 中禁用淡入淡出动画呢?

谢谢

Scaffold.of(context).showSnackBar(SnackBar(
    elevation: 0.0,
    duration: Duration(seconds: 3),
    shape: RoundedRectangleBorder(
        side: BorderSide.none, borderRadius: BorderRadius.circular(20.0)),
    behavior: SnackBarBehavior.floating,
    backgroundColor: Colors.grey.withOpacity(0.5),
    content: _getButtons(),
  ));

然后当单击按钮时,它会删除 SnackBar:

Scaffold.of(context).removeCurrentSnackBar();

然后使用新的按钮设置再次显示上面的 SnackBar。

实际上这些代码可能对问题没有帮助。重要的是我们如何访问 SnackBar 的动画并禁用它?

最佳答案

尝试创建animationController并将其值设置为 zero ,并将此 Controller 附加到 animation Snackbar的 Prop

late AnimationController controller;
  @override
  void initState() {
    super.initState();
    controller = AnimationController(
      duration: const Duration(seconds: 0),
      vsync: this,
    );
  }
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
   behavior: SnackBarBehavior.floating,
   animation: controller,
   content: const Text("Details Updated Successfully"),
   duration: const Duration(seconds: 3),
   action: SnackBarAction(
   label: 'Undo',
   onPressed: () {
     controller.reverse();
   }
  )
));

https://stackoverflow.com/questions/61380744/

相关文章:

php - 超时作业挂起 15 或 30 分钟,然后运行

python - 为什么输入永无止境

ios - 如何在 SwiftUI 中更新 TextField 的值?

google-app-engine - 将 AppEngine 中的传入请求路由到不同版本

vba - 在 64 位 VBA 中使用 TaskDialogIndirect

reactjs - Ant Design 如何处理 Form.List 从底层数据结构访问值?

swiftui - 如何在 SwiftUI 中使 UIViewRepresentable 可聚焦在

perl - 使用 Perl 连接到 AWS Managed Cassandra

python - 为什么在 Python 中从不同路径调用类时 __class__ 不同?

angular - JSDom karma Angular 设置