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

网站建设需要的资料做网站海报用什么app

网站建设需要的资料,做网站海报用什么app,wordpress 主题 minty,青岛seo服务flutter开发实战-ValueListenableBuilder实现局部刷新功能 在创建的新工程中#xff0c;点击按钮更新counter后#xff0c;通过setState可以出发本类的build方法进行更新。当我们只需要更新一小部分控件的时候#xff0c;通过setState就不太合适了#xff0c;这就需要进行…flutter开发实战-ValueListenableBuilder实现局部刷新功能 在创建的新工程中点击按钮更新counter后通过setState可以出发本类的build方法进行更新。当我们只需要更新一小部分控件的时候通过setState就不太合适了这就需要进行局部更新可以通过provider等状态管理库来实现。当然flutter为我们提供了ValueListenableBuilder来实现局部控件的刷新。 一、ValueListenableBuilder ValueListenableBuilder的属性如下 const ValueListenableBuilder({super.key,required this.valueListenable,required this.builder,this.child,}) : assert(valueListenable ! null),assert(builder ! null); ValueListenable继承自Listenable是一个可监听对象。builder是一个typedef typedef ValueWidgetBuilder Widget Function(BuildContext context, T value, Widget? child);child可选可为空 查看ValueListenableBuilder类的实现可以看到 class _ValueListenableBuilderStateT extends StateValueListenableBuilderT {late T value;overridevoid initState() {super.initState();value widget.valueListenable.value;widget.valueListenable.addListener(_valueChanged);}overridevoid didUpdateWidget(ValueListenableBuilderT oldWidget) {super.didUpdateWidget(oldWidget);if (oldWidget.valueListenable ! widget.valueListenable) {oldWidget.valueListenable.removeListener(_valueChanged);value widget.valueListenable.value;widget.valueListenable.addListener(_valueChanged);}}overridevoid dispose() {widget.valueListenable.removeListener(_valueChanged);super.dispose();}void _valueChanged() {setState(() { value widget.valueListenable.value; });}overrideWidget build(BuildContext context) {return widget.builder(context, value, widget.child);} } 在initState中对传入的可监听对象进行监听执行_valueChanged方法_valueChanged执行了setState来触发当前状态的刷新。我们知道setState会执行build方法触发执行build方法最总触发widget.builder回调这样就实现了局部刷新。 child的作用也是非常重要的我们将Widget放到child中在执行builder时会直接使用child将不会再构建一遍child。 二、ValueListenableBuilder实现局部刷新示例 下面使用ValueListenableBuilder来实现一个局部刷新的示例。示例中在界面中有一个显示按钮与隐藏按钮控制修改isShowNotifier的value。通过ValueListenableBuilder的builder中来判断需要显示的内容。 示例代码如下 import package:flutter/material.dart;class ValueListenablePage extends StatefulWidget {const ValueListenablePage({super.key});overrideStateValueListenablePage createState() _ValueListenablePageState(); }class _ValueListenablePageState extends StateValueListenablePage {final isShowNotifier ValueNotifierbool(false);overridevoid initState() {// TODO: implement initStatesuper.initState();}void show() {isShowNotifier.value true;}void hide() {isShowNotifier.value false;}overridevoid dispose() {// TODO: implement disposeisShowNotifier.dispose();super.dispose();}overrideWidget build(BuildContext context) {Size screenSize MediaQuery.of(context).size;return Scaffold(appBar: AppBar(title: const Text(ValueListenablePage),),body: Container(width: screenSize.width,height: screenSize.height,child: Stack(alignment: Alignment.center,children: [Positioned(top: 50,child: buildValueListenable(context),),Positioned(top: 200,child: buildButton(context),),],),),);}Widget buildHide(BuildContext context) {return Container(color: Colors.green,padding: EdgeInsets.symmetric(vertical: 20, horizontal: 50),child: Text(当前隐藏,textAlign: TextAlign.center,overflow: TextOverflow.ellipsis,softWrap: true,style: TextStyle(fontSize: 16,fontWeight: FontWeight.w600,fontStyle: FontStyle.italic,color: Colors.white,decoration: TextDecoration.none,),),);}Widget buildValueListenable(BuildContext context) {return ValueListenableBuilder(valueListenable: isShowNotifier,builder: (BuildContext aContext, bool isShow, Widget? child) {if (isShow) {return child ?? buildHide(context);} else {return buildHide(context);}},child: Container(color: Colors.blueGrey,padding: EdgeInsets.symmetric(vertical: 50, horizontal: 50),child: Text(ValueListenableBuilder Child,textAlign: TextAlign.center,overflow: TextOverflow.ellipsis,softWrap: true,style: TextStyle(fontSize: 16,fontWeight: FontWeight.w600,fontStyle: FontStyle.italic,color: Colors.white,decoration: TextDecoration.none,),),),);}Widget buildButton(BuildContext context) {return Container(width: 300,height: 220,color: Colors.deepOrange,child: Column(mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.center,children: [TextButton(onPressed: () {show();},child: Container(height: 50,width: 200,color: Colors.lightBlue,alignment: Alignment.center,child: Text(点击显示,style: TextStyle(fontSize: 14,color: Colors.white,),),),),TextButton(onPressed: () {hide();},child: Container(height: 50,width: 200,color: Colors.lightBlue,alignment: Alignment.center,child: Text(点击隐藏,style: TextStyle(fontSize: 14,color: Colors.white,),),),),],),);} } 效果图如下 三、小结 flutter开发实战-ValueListenableBuilder实现局部刷新功能 学习记录每天不停进步。
http://www.yutouwan.com/news/488764/

相关文章:

  • 国内互联网推广嘉兴优化网站哪家好
  • 万网如何购买网站空间品牌网鞋
  • 网站开发组织架构如何建设一个电影网站
  • logo灵感网站在网站建设中什么用于搭建页面结构
  • 泉州市网站制作企业做前端开发需要学什么
  • 网页设计动态效果怎么制作广安seo优化
  • 网站如何做关外贸公司英文网站怎么做
  • 做网站的字体wordpress适合二次开发吗
  • 深圳比较好的网站设计公司wordpress支持什么语言
  • 东营人事考试信息网成都网站优化外包
  • 台州网站制作套餐电影网站怎么做优化
  • dedecms手机网站会员卡怎么制作
  • 做网站网站加载内容慢怎么解决衡阳网站
  • 简单的电商网站wordpress调用小工具
  • 保定网站建设制作新网站注册
  • 怎做网站加强主流网站建设
  • 天津网站seo服务设计网站物理结构怎么做
  • 国外网站有哪些平台国外展览设计网站
  • 雪白丰腴做美妇网站深圳最简单的网站建设
  • 无极网站无极城市在线国家域名注册中心
  • 仿淘宝网站建设网站为什么百度不收录
  • 餐饮网站建设需求分析直播开放平台登录
  • 怎样手机网站建设装修设计软件有哪些
  • 网站设置怎么删除wordpress更换主题出错
  • 蒙文网站开发寄生虫seo教程
  • 国外网站seo免费如何做网站焦点图
  • 织梦网站密码工作证明怎么弄
  • 鄢陵县北京网站建设网站site的收录数量要多远索引量
  • nas可以做视频网站吗网站建设外地便宜
  • 福鼎整站优化网络编辑