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

网站建设流程六个步骤村级网站建设系统

网站建设流程六个步骤,村级网站建设系统,wordpress自动保存图片,建设网站所需要什么在使用Provider的时候#xff0c;我们主要关心三个概念#xff1a; ChangeNotifier#xff1a;真正数据#xff08;状态#xff09;存放的地方ChangeNotifierProvider#xff1a;Widget树中提供数据#xff08;状态#xff09;的地方#xff0c;会在其中创建对应的Ch…在使用Provider的时候我们主要关心三个概念 ChangeNotifier真正数据状态存放的地方ChangeNotifierProviderWidget树中提供数据状态的地方会在其中创建对应的ChangeNotifierConsumerWidget树中需要使用数据状态的地方 前提条件 使用之前我们需要先引入对它的依赖截止这篇文章Provider的最新版本为6.0.4 dependencies:provider:^4.0.4第一步创建自己的ChangeNotifier (这里可以对每个需要共享的数据创建自己的文件进行管理) /*** 使用继承自ChangeNotifier,也可以使用混入这里取决于是否需要已经继承了其他的类* 创建一个私有的 _counter,并且提供get set方法* 在set方法中监听 _counter的改变如果改变就调用 notifyListeners方法、通知所有的Consumer进行更新*/ class CounterProvider extends ChangeNotifier {int _counter 100;int get counter _counter;set counter(int value) {_counter value;notifyListeners(); // 通知所有的Consumer进行更新} }importpackage:flutter/material.dart;class UserInfo {String nickname;int level;UserInfo(this.nickname, this.level); }class UserProvider extends ChangeNotifier {UserInfo _userInfo UserInfo(why, 18);set userInfo(UserInfo info){_userInfo info;notifyListeners();}get userinfo{return _userInfo;}}第二步在Widget Tree中插入ChangeNotifierProvider void main() {runApp(// ChangeNotifierProvider 放到顶层这样方便在整个应用的任何地方可以使用 CounterProviderMultiProvider(providers: [// 存放多个共享数据ChangeNotifierProvider(create: (ctx) CounterProvider()),ChangeNotifierProvider(create: (ctx) UserProvider())],child: MyApp(),),); }第三步在首页中使用Consumer引入和修改状态 (这里使用了Selector 替换了Consumer进行了优化 ) class _MyHomePageState extends StateMyHomePage {overridevoid initState() {super.initState();}overrideWidget build(BuildContext context) {return Scaffold(// 脚手架appBar: AppBar(title: Text(widget.title),),body: Center(child: Column (mainAxisAlignment: MainAxisAlignment.center,children: [HYShowData01(),HYShowData02(),],),),floatingActionButton: SelectorCounterProvider,CounterProvider (// 某种情况下使用 Selector代替Consumer性能会更高selector: (ctx,provider) provider,shouldRebuild: (pre, next) false,// 是否需要重新 buildbuilder: (ctx, counterPro,child) {print(floatingActionButton 展示位置builder被调用);return FloatingActionButton(child: child,onPressed: () {counterPro.counter 1;});},child: const Icon(Icons.add),),);} }class HYShowData01 extends StatelessWidget {overrideWidget build(BuildContext context) {print(HYShowData01);return ConsumerCounterProvider(builder: (ctx, counterPro, child) {// ctx 每个build 方法都会有上下文目的是知道当前树的位置// counterPro对应的实例也是我们在builder函数中主要使用的对象// child: 目的是进行优化如果builder下面有一颗庞大的子树当模型发生改变的时候我们并不希望重新build这颗子树那么就可以将这颗子树放到Consumer的child中在这里直接引用即可print(HYShowData011);return Text(共享状态${counterPro.counter});},);} }class HYShowData02 extends StatefulWidget {overrideStateHYShowData02 createState() _HYShowData02State(); }class _HYShowData02State extends StateHYShowData02 {overridevoid didChangeDependencies() {// TODO: implement didChangeDependenciessuper.didChangeDependencies();}overrideWidget build(BuildContext context) {// 使用Consumer 是为了尽可能少的 rebuild widget// 当我们点击了 FloatingActionButton时HomePage的build方法会被重新调用这意味着HomePage的widget的widget都需要重新build// 使用Consumer 会发现 Homepage的build方法不会被重新调用print(_HYShowData02State);return ConsumerCounterProvider(builder: (ctx, counterPro,child) {print(_HYShowData022State);return Text(共享状态${counterPro.counter});});} }
http://www.huolong8.cn/news/220748/

相关文章:

  • 网站建设方案书是什么意思西安今天消息
  • 广东住房和城乡建设厅网站造价wordpress侧边栏删除
  • 做网站的需求清单宁波网页设计制作公司
  • 网站建设服务哪里便宜哈尔滨seo搜索优化
  • 兼职网站编程开发公司算是业主吗
  • 站长百度去哪儿网站建设需要哪些技术
  • 网站建设观点有什么做旅游攻略的网站
  • 广州市官网网站建设多少钱织梦网站制作教程
  • 返回链接 网站惩罚检查 错误检查画册设计流程
  • 网站排名易下拉教程谷歌推广网站建设
  • 可以看违禁网页的浏览器seo点击排名软件哪家好
  • zencart 网站安装wordpress 定时程序
  • 网站备案 快递义乌免费做网站
  • 用dedecms做两个一样的网站短代码 wordpress
  • 基本网站建设网络营销方案策划案例
  • 江西网站建设优化服务wordpress标签图片
  • 用什么来网站开发好易企建站
  • 注册号域名后 怎么建设网站关于申请建设网站申请报告
  • 网站建设项目可行性分析报告如何修改网站备案的域名
  • 怎么在虚拟机中做网站西安app开发制作公司
  • 沙井网站优化手机做点击赚钱的网站
  • 全企网建站怎么样网络营销是什么时候产生的
  • 推广网站的方式白家乐网站怎么建站
  • 学网站建设去什么学校上海外贸推广建站
  • 欧美设计网站推荐一般做推广网站的客户需求仕什么
  • 精品课程网站开发关键技术按月付费网站建设
  • 织梦网站打开空白网络推广专员岗位职责
  • 山东济南建网站公司快照不更新
  • 长沙的在线商城网站建设微小店网站建设口碑好
  • 网站模块设计软件wordpress 换空间 目录 西部数码