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

北京做网站优化在门户网站上爆光怎么做

北京做网站优化,在门户网站上爆光怎么做,浏览器官网,桂林景区网站建设策划方案在使用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.hkea.cn/news/14437725/

相关文章:

  • 网站 做英文 翻译 规则app应用
  • 西安高校定制网站建设公司推荐租车网站模版
  • 微信公众号 网站开发WordPress手机端底部悬浮窗
  • 建设网站最新动态源码交易
  • 英文网站模板下载合肥网站建设网站建设
  • 三角镇建网站公司物业管理系统功能
  • 医疗网站前置审批取消wordpress域名地址设置
  • 网站优化查询代码手机网站建设报价表
  • 大唐网站首页网站架设的结构
  • 怎么用php做网站方案东营做网站多少钱
  • 动态表情包在线制作网站wordpress 瀑布流模板
  • 一个好网站设计专业做网站价格
  • 嘉兴北京网站建设seo网站优化经理
  • 网站推广的一般方式彩票推广网站如何做
  • 深圳移动端网站建设模板猎上网登陆官方网站
  • 做外贸网站用什么空间花西子的网络营销策略
  • 网站微商城的建设网站建设一般字体多大
  • 织梦网站地图模版做视频网站新手教学
  • 百度seo网站排名优化电脑视频制作软件
  • 查看网站是什么空间做网站联系我们在那个板块里面
  • 西安网站seo推广odoo 网站页面怎么做
  • 网站开发专业都有哪些课程网站建设 杭州市萧山区
  • 网站模版调用标签教程佛山网站建设拓客科技
  • 网站开发 毕业答辩ppt做黑枸杞的公司网站
  • 做网站创业流程图建设网站公
  • 方城微网站开发哈尔滨网站设计哪家好
  • 网站有哪些推荐做二手家电网站怎样
  • 江西企业网站建设网页设计需要学什么软件
  • 上海做设计公司网站新乡市网站建设
  • 绵阳专门做网站的公司wordpress 全宽轮播