flutter 动画展开菜单_Flutter Flow实现半圆弹出菜单

本文介绍了如何使用Flutter的Flow组件创建动画效果,包括水平展开/收起菜单、圆形展开/收起以及半圆菜单展开/收起。通过结合Animation和Matrix4,展示了Flow组件的高性能和灵活性。
摘要由CSDN通过智能技术生成

043a28ae30e7d8b1034442f4c8af5a8a.png

老孟导读:本文由共建组织行云流水提供。在这里特别感谢我们共建组织的成员,完成了近20篇高质量的文章,如果您也希望加入我们,欢迎私信我,也可以到 老孟Flutter 网站:http://laomengit.com/plan/build_plan.html 查看详情。

Flow

流式小部件,同类型的有Wrap,Row等,Flow的特点是可以调整子组件的位置和大小,结合Matrix4绘制出各种酷炫的效果。

Flow({
        Key key,     @required FlowDelegate delegate,   //继承FlowDelegate的管理类,来控制子组件的定位    List children: const []    //可放多个子组件})
Flow仅有2个属性, children表示子控件, delegate是调整子组件的位置和大小,需要自定义。

水平展开/收起菜单

使用Flow实现水平展开/收起菜单的功能,代码如下:

class DemoFlowPopMenu extends StatefulWidget {
      @override  _DemoFlowPopMenuState createState() => _DemoFlowPopMenuState();}class _DemoFlowPopMenuState extends State<DemoFlowPopMenu>    with SingleTickerProviderStateMixin {
      //动画必须要with这个类  AnimationController _ctrlAnimationPopMenu; //定义动画的变量  IconData lastTapped = Icons.notifications;  final List menuItems = [    //菜单的icon    Icons.home,    Icons.new_releases,    Icons.notifications,    Icons.settings,    Icons.menu,  ];  void _updateMenu(IconData icon) {
        if (icon != Icons.menu) {
          setState(() => lastTapped = icon);    } else {
          _ctrlAnimationPopMenu.status == AnimationStatus.completed          ? _ctrlAnimationPopMenu.reverse() //展开和收拢的效果          : _ctrlAnimationPopMenu.forward();    }  }  @override  void initState() {
        super.initState();    _ctrlAnimationPopMenu = AnimationController(      //必须初始化动画变量      duration: const Durat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值