题记

—— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,优美的应用体验 来自于细节的处理,更源自于码农的自我要求与努力


Flutter是谷歌推出的最新的移动开发框架。

【x1】微信公众号的每日提醒 随时随记 每日积累 随心而过 文章底部扫码关注

【x2】各种系列的视频教程 免费开源 关注 你不会迷路

【x3】系列文章 百万 Demo 随时 复制粘贴 使用

【x4】一目了然的源码


本文章实现的 Demo 如下:

Material Design 设计风格中的容器转换过渡 ,如一个列表点击跳转详情,进行无缝切换,在Flutter 中也就是 Container transform 容器切换,通过OpenContainer来实现。

不要慌先添加个依赖

  # Material motion 规范的预构建动画animations: ^1.1.1

OpenContainer 在两个子窗口组件之间进行无缝切换,执行起来的效果看起来像是同一个窗口组件切换,分别通过 closedBuilder 和 openBuilder 属性来配置。


class AnimationOpenContainerPage extends StatefulWidget {@overrideState<StatefulWidget> createState() {return _HomePageState();}
}class _HomePageState extends State<AnimationOpenContainerPage> {@overrideWidget build(BuildContext context) {return Scaffold(backgroundColor: Colors.grey[300],appBar: AppBar(title: Text("浏览图片"),),body: buildOpenContainer(),);}... ...}

OpenContainer 的构建使用如下:

  OpenContainer<dynamic> buildOpenContainer() {return OpenContainer(//背景颜色closedColor: Colors.transparent,//阴影closedElevation: 0.0,//圆角closedShape: const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(10.0)),),//显示的布局closedBuilder: (context, action) {return Container(color: Colors.grey,height: 120,margin: EdgeInsets.all(20),);},//过渡的方式transitionType: ContainerTransitionType.fade,//过渡的时间transitionDuration: const Duration(milliseconds: 3500),//即将打开的 Widget 的边框样式openShape: const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(1.0)),),//即将打开的 Widget 的背景openColor: Colors.transparent,//阴影openElevation: 1.0,//布局openBuilder: (context, action) {return DetailsPage();},);}

当前显示的Widget 通过closedBuilder来构建的,如下图所示:

DetailsPage 是打开的页面详情,代码如下:

class DetailsPage extends StatelessWidget {@overrideWidget build(BuildContext context) {return Scaffold(//背景透明backgroundColor: Colors.white,appBar: AppBar(title: Text("商品详情"),),body: buildCurrentWidget(),);}Widget buildCurrentWidget() {return Container(color: Colors.white,padding: EdgeInsets.all(8),margin: EdgeInsets.all(10),child: Column(crossAxisAlignment: CrossAxisAlignment.start,children: [Image.asset("images/banner3.webp",fit: BoxFit.fill,),SizedBox(width: 12,),Text("每日分享 精彩一刻",style: TextStyle(fontSize: 22),),SizedBox(height: 4,),Container(child: Text("优美的应用体验 来自于细节的处理,更源自于码农的自我要求与努力",softWrap: true,overflow: TextOverflow.ellipsis,maxLines: 3,style: TextStyle(fontSize: 16),),),],),);}
}

如下图所示

以小编的性格,要实现百万Demo随时复制粘贴肯定是需要源码的完整源码在这里

有兴趣 你可以关注一下 西瓜视频 — 早起的年轻人

Flutter OpenContainer 容器转换过渡 Material Design 设计风格的实践相关推荐

  1. android6.0进入Material Design时代

    Material Design 官方Material Design详细介绍文档:http://www.google.com/design/spec/material-design/introducti ...

  2. 【Android】进入Material Design时代

    由于本文引用了大量官方文档.图片资源,以及开源社区的Lib和相关图片资源,因此在转载的时候,务必注明来源,如果使用资源请注明资源的出处,尊重版权,尊重别人的劳动成果,谢谢! Material Desi ...

  3. Android material design

    关于Material Design的开源库,本人已经在GitHub上创建了一个项目MaterialDesignCenter,用于收集Material Design的相关资源,会不定时更新,大家可以st ...

  4. Material Design(Android6.0)

    转:http://blog.csdn.net/xushuaic/article/details/40627389 由于本文引用了大量官方文档.图片资源,以及开源社区的Lib和相关图片资源,因此在转载的 ...

  5. Create Apps with Material Design

    设计原则 实体感隐喻 通过构建系统化的动效和空间合理化利用,并将两个理念合二为一,构成了实体隐喻.与众不同的触感是实体的基础,这一灵感来自我们对纸墨的研究,但是我们相信,随着科技的进步,应用前景将不可 ...

  6. 头条是一款遵循材料设计(Material Design)的第三方今日头条客户端, 聚合了新闻/段子/图片/视频/头条号内容, 没有广告, 仅仅只有存粹的阅读, 不断完善中, 采用 MVP + RxJa

    Toutiao 项目地址:iMeiji/Toutiao  简介:头条是一款遵循材料设计(Material Design)的第三方今日头条客户端, 聚合了新闻/段子/图片/视频/头条号内容, 没有广告, ...

  7. 小小图标功能大,10个最佳Material Design 图标资源你不可错过

    Material design至发布以来,已然形成了其鲜明的设计风格,并渐渐成为统一 Android Mobile.Android Tablet.Desktop Chrome 等全平台设计语言规范.基 ...

  8. flutter学习之二Material Design设计规范

    前言: 最近在自学flutter跨平台开发,从学习的过程来看真心感觉不是那么一件特别容易的事.不但要了解语法规则, 还要知晓常用控件,和一些扩展性的外延知识,所以套一句古人的话"路漫漫其修远 ...

  9. 使用Material Design的Flutter应用

    使用Flutter框架必须要导入flutter/material.dart包,然后在main()函数中调用runApp函数,这样就可以启动一个Flutter应用.访问<Flutter框架基础&g ...

最新文章

  1. IN-12辉光数码管:俄罗斯进口的器件
  2. 如何使用RS-232发射器和接收器?
  3. Java实现话术词槽匹配_桔子互动|百度UNIT操作详解(上篇)
  4. pg 10 wal 归档同步配置
  5. amt630a芯片中文资料_甲基化芯片学习记录
  6. Java多线程:易失性变量,事前关联和内存一致性
  7. CRITIC法之matlab
  8. linux命令备记(一)
  9. mysql 连接工具
  10. ssm read time out的原因_为什么得肝病的男人越来越多?爱喝酒不是原因,或跟老婆有关系!...
  11. ajax获取checkbox循环出来的值_Django:前后端异步加载数据(循环大法)
  12. 【渝粤教育】国家开放大学2018年秋季 7389-22T劳动与社会保障法 参考试题
  13. 【Flutter】flutter doctor 报错Android license status unknown. Run `flutter doctor --android-licenses‘
  14. 软件测试常见Bug清单
  15. 轻松盘,资产盘点不再难 RFID办公资产盘点管理
  16. 游戏渠道SDK是什么
  17. 如何更好地理解中间件和洋葱模型
  18. 非关系型数据库之Redis【redis安装】
  19. 【论文】文本相似度计算方法综述
  20. 中华大地第二次大变革 看印度反思自我之六 印度模式更有吸引力

热门文章

  1. ICCV 2019 | 商汤科技57篇论文入选,13项竞赛夺冠
  2. CV Code | 计算机视觉开源周报20190904期
  3. 手写公式识别 :基于深度学习的端到端方法
  4. 「假期余额不足」安排用Python写个时间在线生成器 快夸我
  5. vue中this.init用法_Vue中的this.$options.data()和this.$data用法说明
  6. 稳,鸿蒙霸榜Github!
  7. 收藏 | 目标检测的模型集成与实验
  8. 带你自学Python系列(十七):Python中类的用法(三)
  9. VTK模块学习(一)
  10. python 字典排序成绩_集体备课第四章 python基础与顺序结构