Flutter:如何使用 AnimatedContainer 在列中展开?

标签 flutter dart flutter-layout

假设我们有 Column 的 3 个 child :

Flexible(
   flex:1,
   child: Container(
      color: Colors.red,
   ),
),
Flexible(
   flex:3,
   child: Container(
      color: Colors.yellow,
   ),
),
Flexible(
   flex:1,
   child: Container(
      color: Colors.blue,
   ),
),

我想以编程方式扩展中间 child flex=3全覆盖Column具有流畅的动画,而顶部和底部的 child 相应地缩小。

现在我的设置是 ColumnFlexible小部件。但是,如果您能想到其他小部件的解决方案,我也愿意接受这些想法。

最佳答案

截图:

enter image description here

代码:

Duration _duration = Duration(seconds: 1);
int _flex1 = 1, _flex2 = 3, _flex3 = 1;

@override
Widget build(BuildContext context) {

  double height = MediaQuery.of(context).size.height;
  var height1 = (_flex1 * height) / (_flex1 + _flex2 + _flex3);
  var height2 = (_flex2 * height) / (_flex1 + _flex2 + _flex3);
  var height3 = (_flex3 * height) / (_flex1 + _flex2 + _flex3);

  return Scaffold(
    body: Column(
      children: <Widget>[
        AnimatedContainer(
          duration: _duration,
          color: Colors.blue,
          height: height1,
          alignment: Alignment.center,
          child: Text("Flex: ${_flex1}", style: TextStyle(fontSize: 32, fontWeight: FontWeight.bold)),
        ),
        AnimatedContainer(
          duration: _duration,
          color: Colors.red,
          height: height2,
          alignment: Alignment.center,
          child: Text("Flex: ${_flex2}", style: TextStyle(fontSize: 32, fontWeight: FontWeight.bold)),
        ),
        AnimatedContainer(
          duration: _duration,
          color: Colors.teal,
          height: height3,
          alignment: Alignment.center,
          child: Text("Flex: ${_flex3}", style: TextStyle(fontSize: 32, fontWeight: FontWeight.bold)),
        ),
      ],
    ),
  );
}

关于Flutter:如何使用 AnimatedContainer 在列中展开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58328393/

相关文章:

flutter - 如何在 Flutter 上设置图像对齐

flutter - 为什么 LayoutBuilder 不能有固有尺寸?

flutter - 如何在 token 或刷新 token 过期时使用 bloc in flutter 将用户重定向到注销页面

firebase - Flutter Firestore 地理查询

flutter - 在multi_image_picker中升级 flutter 之后,未为 Assets 类定义 setter/getter 'filePath'

flutter - 在 Flutter ListView 中,我如何知道 View 中第一个和最后一个项目的索引号?

class - 此类被标记为 '@immutable',但是其一个或多个实例字段不是最终的:

android - 错误 : Flutter SDK not found. 在 local.properties 文件中使用 flutter.sdk 定义位置

flutter - 如何使用 ContinuousRectangleBorder 的 getOuterPath 使其看起来像倒圆形边框?

jquery - 将一个元素包裹在另一个元素周围