You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:47:12