AnimatedContainer对于不同的孩子表现不同

时间:2019-08-10 13:09:22

标签: flutter dart

AnimatedContainer似乎不适用于Container,但不适用于FlutterLogo,为什么呢?


代码:

bool _value = true;

@override
Widget build(BuildContext context) {
  var flutterLogo = FlutterLogo(size: _value ? 400 : 200, colors: Colors.blue,);
  var container = Container(height: _value ? 400 : 200, color: Colors.blue,);

  return Scaffold(
    floatingActionButton: FloatingActionButton(
      onPressed: () => setState(() => _value = !_value),
    ),
    body: AnimatedContainer(
      duration: Duration(milliseconds: 1000),
      child: container, // putting flutterLogo here works fine
    ),
  );
}

PS:

我知道height中存在AnimatedContainer属性可以解决此问题,但是我想知道为什么正常的Container height在这里失败。

1 个答案:

答案 0 :(得分:0)

AnimatedContainer的子项大小更改时不进行动画处理。如果未指定height / width,则会采用其子项的大小。

它适用于FlutterLogo的事实与AnimatedContainer完全无关。 FlutterLogo是其大小的动画。