【Flutter】功能型组件之数据共享】的更多相关文章

前言   InheritedWidget提供了一种数据在widget树中从上到下传递.共享的方式,例如在应用的根widget中通过InheritedWidget共享了一个数据,那么便可以在子widget中来获取该共享的数据.InheritedWidget在widget树中数据传递方向是从上到下的,这和Notification的传递方向是相反的. 接口描述 代码示例 // 数据共享(InheritedWidget) // InheritedWidget提供了一种数据在widget树中从上到下传递.…
Flutter 父子组件传值 一父传子: 父中: void onButtonChange(val1,val2,val3){ print('============================子向父传值OK了==============='); print(val1); print(val2); print(val3); print('============================子向父传值OK了===============');} List list=[["A",&qu…
在开始之前,我们先写一个最简单的入口文件:     后面,都是在这个结构的基础上面完成的. 由于Container组件和Text组件都是写在body里面的,所以下面,先将body抽离成一个组件的形式. Container组件 在flutter里面Container组件是一个容器组件,类似于html中的div一样. 在Center组件里面添加Container组件,然后再添加Text组件,和上面的效果是一样的. Container.Text这些自定义组件的本质都是类,有很多可选的命名参数,在Con…
Flutter Inkwell使用详解 该文章属于[Flutter每周一组件]系列,其它组件可以查看该系列下的文章,该系列会不间断更新:所有组件的demo已经上传值Github: https://github.com/xj124456/flutter_widget_demo, 欢迎Star 使用场景 当需要给一个元素点击事件的时候,你可以用InkWell来包裹这个元素,它里面有常用交互事件和点击效果,可以简单实现想要的效果 预览 组件参数说明 const InkWell({ Key key, W…
该文章属于[Flutter每周一组件]系列,其它组件可以查看该系列下的文章,该系列会不间断更新:所有组件的demo已经上传值Github: https://github.com/xj124456/flutter_widget_demo 欢迎Star 博客:思否, 掘金, 知乎, 简书, 慕课, CSDN, 博客园, DX前端 公众号:DX前端框架知识库 联系我:公众号菜单点击联系我 使用场景 组件解释:固定高度的单个行,通常包含一些文本以及前导或尾随图标. 当需要给一个列表list的时候,你可以…
前言 对话框本质上也是UI布局,通常一个对话框会包含标题.内容,以及一些操作按钮,为此,Material库中提供了一些现成的对话框组件来用于快速的构建出一个完整的对话框. 接口描述 // 1. AlertDialog const AlertDialog({ Key key, // 对话框组件标题 this.title, // 标题填充 this.titlePadding, // 标题文本样式 this.titleTextStyle, // 对话框内容组件 this.content, // 内容的…
前言 很多时候会依赖一些异步数据来动态更新UI,比如在打开一个页面时我们需要先从互联网上获取数据,在获取数据的过程中我们显示一个加载框,等获取到数据时我们再渲染页面:又比如想展示Stream(比如文件流.互联网数据接收流)的进度.当然,通过StatefulWidget完全可以实现上述这些功能.但由于在实际开发中依赖异步数据更新UI的这种场景非常常见,因此Flutter专门提供了FutureBuilder和StreamBuilder两个组件来快速实现这种功能. 接口描述 FutureBuilder…
前言 Color类中颜色以一个int值保存,显示器颜色是由红.绿.蓝三基色组成,每种颜色占8比特,存储结构如下: Bit(位) 颜色 0-7 蓝色 8-15 绿色 16-23 红色 24-31 Alpha(不透明度) Theme组件可以为Material APP定义主题数据(ThemeData).Material组件库里很多组件都使用了主题数据,如导航栏颜色.标题字体.Icon样式等.Theme内会使用InheritedWidget来为其子树共享样式数据. 接口描述 factory ThemeD…
前言   在Flutter开发中,状态管理是一个永恒的话题.   一般的原则是:如果状态是组件私有的,则应该由组件自己管理:如果状态要跨组件共享,则该状态应该由各个组件共同的父元素来管理.   对于组件私有的状态管理很好理解,但对于跨组件共享的状态,管理的方式就比较多了,如使用全局事件总线EventBus,它是一个观察者模式的实现,通过它就可以实现跨组件状态同步:状态持有方(发布者)负责更新.发布状态,状态使用方(观察者)监听状态改变事件来执行一些操作.   但是观察者模式来实现跨组件状态共享有…
前言 为了避免用户误触返回按钮而导致APP退出,在很多APP中都拦截了用户点击返回键的按钮,然后进行一些防误触判断,比如当用户在某一个时间段内点击两次时,才会认为用户是要退出(而非误触).Flutter中可以通过WillPopScope来实现返回按钮拦截. 接口描述 const WillPopScope({ Key key, @required this.child, // onWillPop是一个回调函数,当用户点击返回按钮时被调用(包括导航返回按钮及Android物理返回按钮). // 该回…