flutter里AnimatedContainer居然是表白的一把好手

最近情人节好像要没多久了欸,不管你有没有女朋友都可以学起来哦

哈,偶然看到该组件,突然觉得可以用来表白欸,我的小粉丝们,收藏学起来吧

其实以前我也写过一个类似的跳动的心的代码,只不过那个时候是用的css,放一个链接:link.
今天就用flutter再写一个

animatedcontainer 是一个自带动画功能的container,
我们只需要给该组件提供动画的开始和结束值,就可以让它动起来。

(一)效果图:
在这里插入图片描述
(二)实现原理:
利用可以变化的AnimatedContainer组件,我们准备好一张png图,(免抠图),把图片给你们
在这里插入图片描述

让组件在放大缩小的变化过程过渡到我们准备好的爱心上,然后这个爱心的图片就可以变化啦

(三)代码实现
复制即可运行,图片需要配置文件配置的,看链接:link.

import 'package:flutter/material.dart';

void main() => (runApp(MyApp()));

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: AnimatedContainerPage(),
    );
  }
}

class AnimatedContainerPage extends StatefulWidget {
  @override
  _AnimatedContainerPageState createState() => _AnimatedContainerPageState();
}

class _AnimatedContainerPageState extends State<AnimatedContainerPage> {
  bool click = false;

  @override
  Widget build(BuildContext context) {
    return Center(
      child: GestureDetector(
        onTap: () {
          setState(() {
            click = !click;
          });
        },
        child: AnimatedContainer(
          //把动画作用在宽高上
          height: click ? 200 : 100,
          width: click ? 200 : 100,
          decoration: BoxDecoration(
              image: DecorationImage(
                image: AssetImage('images/aixin.png'),
                fit: BoxFit.cover,
              ),
              borderRadius: BorderRadius.all(Radius.circular(
                click ? 200 : 0,
              ))),
          duration: Duration(seconds: 3),
          curve: Curves.linear,
          onEnd:(){//结束后的状态
            setState(() {
              click=!click;
            });
          } ,
        ),
      ),
    );
  }
}

今天就这样,我的小粉丝们,拜拜,啾咪~>_<

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值