当前位置: 首页 > news >正文

张家界做网站网站品牌建设公司

张家界做网站,网站品牌建设公司,网站推广的方法ppt,做虾网站该起啥名好文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了"如何实现文件存储"相关的内容,本章回中将介绍 如何实现组件之间共享数据。闲话休提,让我们一起Talk Flutter吧。 概念介绍 数据共享是程序中常用的功能,本章回介绍如何…

文章目录

  • 概念介绍
  • 使用方法
  • 示例代码

我们在上一章回中介绍了"如何实现文件存储"相关的内容,本章回中将介绍 如何实现组件之间共享数据。闲话休提,让我们一起Talk Flutter吧。

概念介绍

数据共享是程序中常用的功能,本章回介绍如何在组件之间共享数据,不过这里提到的组件不是任意组件,主要指父组件与子组件,Flutter提供了InheritedWidget组件来实现共享数据的功能,本章回中将详细介绍如何使用该组件实现共享数据的功能。

使用方法

  1. 创建一个父类,类中至少包含两个属性:共享数据和子组件(child);
  2. 父类继承自InheritedWidget类,实现父类的中方法;
  3. 创建一个子类,子类中使用父类中共享的数据;
  4. 创建子类对象并且将它赋值给父类对象的子组件属性(childe);
  5. 更新父类中的共享数据,子组件中的共享数据会自动更新;

示例代码

///定义父组件,父组件包含一个共享数据data
class FatherWidget extends InheritedWidget {String data;FatherWidget({Key? key, this.data = "default data of Father", required Widget child}): super(key: key, child: child);///定义获取父组件的方法,方便子组件获取父组件中的数据static FatherWidget? of(BuildContext context) {///下面的方式可以通知子组件更新// return context.dependOnInheritedWidgetOfExactType<FatherWidget>();///下面的方式无法通知子组件更新return context.getElementForInheritedWidgetOfExactType<FatherWidget>()?.widget as FatherWidget;}///返回true时通知更新子组件中的data,也就是调用子组件的didChangeDependencies()方法bool updateShouldNotify(FatherWidget oldWidget) {return oldWidget.data != data;}
}///在子组件中使用父组件中的共享数据
class SonWidget extends StatefulWidget {const SonWidget({Key? key}) : super(key: key);State<SonWidget> createState() => _SonWidgetState();
}class _SonWidgetState extends State<SonWidget> {Widget build(BuildContext context) {String? data = FatherWidget.of(context)?.data;return Text("son data: $data",style: const TextStyle(color: Colors.white, fontSize: 24),);}void initState() {debugPrint("SonWidget: initState");}///父组件中的数据更新时会回调此方法void didChangeDependencies() {debugPrint("SonWidget: didChangeDependencies");}void dispose() {debugPrint("SonWidget: dispose");}void activate() {debugPrint("SonWidget: activate");}void deactivate() {debugPrint("SonWidget: deactivate");}void didUpdateWidget(SonWidget oldWidget) {debugPrint("SonWidget: didUpdateWidget");}
}children: [Container(width: 300,height: 100,alignment: Alignment.center,color: Colors.blue,child: FatherWidget(///父组件和子组件形成组件树data: _tempData,child: const SonWidget(),),),SizedBox(width: 200,height: 100,child: ElevatedButton(onPressed: () {setState(() {///更新父组件中的数据,子组件中数据会自动更新_tempData = "new data";});},child: const Text('Change data'),),),
],

代码中的FatherWidget是InheritedWidget的子类,重点关注一下of()方法的实现,通过该方法可以获取到FatherWidget的实例。该类中还有一个方法叫updateShouldNotify(),它决定是否更新子组件。

SonWidget本质上是Text组件的封装,它通过child属性与FatherWidget关联起来。代码中还提供了一个按钮,点击按钮时就会更新父组件中的数据,同时子组件中的数据也会被更新。我在这里就不演示程序的运行结果了,建议大家自己动手去实践。

看官们,关于"如何实现组件之间共享数据"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

http://www.yayakq.cn/news/484525/

相关文章:

  • 域名备案中网站可以开通制作网站一般使用的软件有哪些
  • 网站建站 外贸江门网站推广哪里专业
  • 做婚礼效果图的网站有哪些wordpress 进后台
  • 长垣县住房和城乡建设局网站如何做家教网站
  • 如何申请网站优化工作广州企业官网建设
  • 专业的建网站的公司wordpress点评模板
  • 会员管理网站ASP建设做网站哪里最便宜
  • 杭州高端网站制作基于 seajs 的高性能网站开发和优化实践_王保平(淘宝)
  • 石药网站好一点的app开发公司
  • 风景旅游网站建设的设计思路视频拍摄剪辑培训
  • 学生个人网站模板嘉峪关建设局网站
  • 专业构建网站的公司wordpress 游戏 模板下载
  • 哪个博客可以做单页网站台山住房和城乡建设 网站
  • 搭建网站的五大步骤seo优化seo外包
  • 网站内容编辑器上海网络推广报价
  • 网站备案多长时间来完成简单的做海报的网站
  • 做点心的网站手机网站有什么
  • 游戏发号网站源码快速做网站详情页
  • 苏州做网站公司精选苏州聚尚网络更改wordpress后台登录地址
  • 营销网站建设内容wordpress新建文章页修改图片样式
  • 锦州网站建设公司公司做网站价格
  • 廊坊网站建站贺州招聘网站建设
  • 嘉定建设机械网站论述网站建设流程
  • 网站程序风格淘宝网站建设目的
  • 未央网站建设pc做网站
  • 网站配色原理wordpress教程破解版
  • cdn网站加速有用吗兄弟网站制作
  • 酒店专业培训网站建设网站网址有哪些
  • 医院网站建设需求分析wordpress粘贴图片
  • 旅游网站系统建设中山网站建设公司排名