flutter :布局高度伸展或者压缩动画

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Animated Container')),
        body: AnimatedContainerExample(),
      ),
    );
  }
}

class AnimatedContainerExample extends StatefulWidget {
  @override
  _AnimatedContainerExampleState createState() => _AnimatedContainerExampleState();
}

class _AnimatedContainerExampleState extends State<AnimatedContainerExample> {
  double _height = 100.0;

  void _toggleHeight() {
    setState(() {
      _height = _height == 100.0 ? 200.0 : 100.0; // 切换高度
    });
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          AnimatedContainer(
            duration: Duration(seconds: 1), // 动画持续时间
            height: _height,
            width: 100,
            color: Colors.blue,
            curve: Curves.easeInOut, // 动画曲线
          ),
          SizedBox(height: 20),
          ElevatedButton(
            onPressed: _toggleHeight,
            child: Text('Toggle Height'),
          ),
        ],
      ),
    );
  }
}

代码说明:
AnimatedContainer: 这个小部件会自动为你提供一个动画效果,当它的属性(在这里是 height)发生变化时。

duration: 设置动画的持续时间,这里设置为 1 秒。

curve: 你可以设置动画的曲线效果,例如 Curves.easeInOut 使得动画在开始和结束时都比较平滑。

_toggleHeight 方法: 点击按钮会调用这个方法,切换 _height 的值,并触发动画。

使用方法:
将上述代码复制到你的 Flutter 项目中并运行,点击按钮即可看到容器的高度在 100 和 200 之间变化的动画效果。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容