AnimatedSwitcher无动画效果求助:设唯一Key仍不生效?
AnimatedSwitcher无动画效果的问题排查与修复
你的代码里Key的设置是没问题的——给前后两个Container分别设置的ValueKey(true)和ValueKey(false)是唯一且不同的,满足AnimatedSwitcher触发动画的前提条件。
核心问题出在动画时长的单位错误:你写的是Duration(microseconds: 1500),1500微秒等于1.5毫秒,这个时长短到人类肉眼完全无法感知到动画效果。只需要把单位改成milliseconds(毫秒),就能正常看到缩放切换动画了。
修正后的代码如下:
class _MyStatefulWidgetState extends State<MyStatefulWidget> { bool _showFrontSide = true; @override Widget build(BuildContext context) { final face = _showFrontSide ? Container(key: const ValueKey(true), child: const Text("Front")) : Container(key: const ValueKey(false), child: const Text("Back")); return GestureDetector( onTap: () => setState(() { _showFrontSide = !_showFrontSide; }), child: AnimatedSwitcher( // 将单位从microseconds改为milliseconds duration: const Duration(milliseconds: 1500), transitionBuilder: (Widget child, Animation<double> animation) { return ScaleTransition(scale: animation, child: child); }, child: face, ), ); } }
内容的提问来源于stack exchange,提问作者Battlefury
相关产品推荐
相关产品推荐

