每天一个秃头小技巧

【Flutter】AnimatedContainer:动画容器

2025-04-29  本文已影响0人  littlefogcat

基本概念

AnimatedContainer 是一个可以动态改变其属性的容器控件。当其属性发生变化时,它会自动以动画的方式过渡到新的状态,而不需要手动编写动画代码。这使得开发者能够轻松实现各种动态效果,例如按钮的缩放、颜色变化、位置移动等。

主要属性

以下是 AnimatedContainer 的一些常用属性:

1. width 和 height

2. color

3. margin 和 padding

4. decoration

5. transform

6. duration

7. curve

示例

以下例子中,展示了一个当鼠标悬浮在上面时会放大的组件:

class _ArticleItemCardState extends State<_ArticleItemCard> {
  bool _isHovered = false;

  @override
  Widget build(BuildContext context) {
    return MouseRegion(
      onEnter: (_) {
        setState(() {
          _isHovered = true;
        });
      },
      onExit: (_) {
        setState(() {
          _isHovered = false;
        });
      },
      child: AnimatedContainer(
        duration: Duration(milliseconds: 150),
        transform: Matrix4.identity()..scale(_isHovered ? 1.05 : 1.0),
        transformAlignment: Alignment.center,
        margin: EdgeInsets.only(top: 24),
        decoration: BoxDecoration(
          color: Colors.white,
          borderRadius: BorderRadius.all(Radius.circular(cornerRadius)),
          boxShadow: commonBoxShadow,
        ),
        child: SizedBox(),
      ),
    );
  }
}
上一篇 下一篇

猜你喜欢

热点阅读