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

推广哪个网站好广告公司取名字参考大全

推广哪个网站好,广告公司取名字参考大全,无线昆明官方网站,seo推广计划类型可以分为什么场景#xff1a;当一个表单需要在表单全部或者特定项赋值后才会让提交按钮可点击。 1.普通实现方式#xff1a; ///场景#xff1a;检查[test11][test12][test13]均不为空时做一些事情#xff0c;例如提交按钮变成可点击String? test11;String? test12;int? test13;///当…  场景当一个表单需要在表单全部或者特定项赋值后才会让提交按钮可点击。 1.普通实现方式 ///场景检查[test11][test12][test13]均不为空时做一些事情例如提交按钮变成可点击String? test11;String? test12;int? test13;///当需要检查[test11][test12][test13]是否全部有值时需要这么做。///1.给[test11][test12][test13]设置监听或者在他们赋值的时候每次调用2检查。///2.检查三个值的状态if(test11!nulltest12!nulltest12!null){///print [test11][test12][test13]均不为空。} 2.使用Watcher方式实现 ///使用[WatchableObject]配合[Watcher]监测///1.只需要把String、int、bool、等对象用[WatchableObject]代替。WatchableObject test1 WatchableObject();WatchableObject test2 WatchableObject();WatchableObject test3 WatchableObject();///2.使用[Watcher]单例绑定对象。Watcher().bindObject([test1, test2, test3]);///3.检查回调Watcher().check((allCheck) {print(?????????????????????$allCheck);});///4.模拟不同时间赋值Future.delayed(Duration(seconds: 3), () {test1.setValue(1);});Future.delayed(Duration(seconds: 6), () {test2.setValue(123);});Future.delayed(Duration(seconds: 8), () {test3.setValue(123);});///退出界面时清除Watcher使用得内存overridevoid dispose() {super.dispose();Watcher().clear();} logcat输出 方式1和方式2都能达到效果但是方式1需要对每一个变量进行监听在每一个赋值的地方得检查所有得值是否都已有了值这样实现的出错率就会变得很高。方式2则是利用变量托管托管类已实现了对变量的赋值的监听只要使用托管类WatchableObject包装变量则可以实时监听到变量的赋值变化所以代码上对变量的使用不会再对变量进行任何监听和处理统一会由Watcher类进行回调处理。方式1的缺点就是代码混乱容易出错。方式2的优点可以解决方式1的缺点但是缺点是使用到Watcher的地方变量必须交给WatchableObject托管导致定义变量的时候变得麻烦但是这个只要使用习惯了确可以忽略该缺点。 喜欢这种方式的或者有需求用得到的朋友来撸代码吧 WatchableObject类 import dart:math;import package:kq_flutter_widgets/widgets/listener/object_watcher/watcher.dart; import package:kq_flutter_widgets/widgets/listener/object_watcher/watcher_callback.dart;///可观察对象 ///[T]可观察的对象类型。 ///例如传入的是String则会持有String对象 ///并可以设置[watcher]观察绑定的String对象值的变化。 class WatchableObjectT {T? _watchableObject;double? _uuid;///初始值WatchableObject({T? init}) {setValue(init);}///设置值void setValue(T? other) {_watchableObject Watcher().value(getUuid(), other);}///设置观察者void watcher(WatcherCallback watcherCallback) {Watcher().watcher(getUuid(), watcherCallback);}///获取值T? value() {return _watchableObject;}///获取uuiddouble getUuid() {return _uuid ?? Random().nextDouble();} }WatcherCallback类 ///回调 class WatcherCallbackT {///值改变回调函数///[object]改变的值。final Function(T? object) onChanged;WatcherCallback(this.onChanged); }Watcher类 import package:kq_flutter_widgets/widgets/listener/object_watcher/watchable_object.dart; import package:kq_flutter_widgets/widgets/listener/object_watcher/watcher_callback.dart;///对象观察者 class Watcher {Watcher._internal();factory Watcher() _instance;static final Watcher _instance Watcher._internal();final Mapdouble, WatcherCallback _objectWatchers {};final ListWatchableObject _objects [];final Mapdouble, bool _bindObjects {};///绑定对象///[objects]绑定的一组对象。void bindObject(ListWatchableObject objects) {clear();_objects.addAll(objects);for (WatchableObject str in objects) {_bindObjects.putIfAbsent(str.getUuid(), () _checkObject(str.value()));}}///检查绑定的对象是否已全部赋值///[callback]每次赋值都会回调///[allCheck]是否全部已赋值是则返回true不是则返回false。void checkT(Function(bool allCheck) callback) {for (WatchableObject str in _objects) {str.watcher(WatcherCallback((object) {_bindObjects.update(str.getUuid(),(value) _checkObject(object),);_realCheck(callback);},),);}_realCheck(callback);}bool _checkObjectT(T object) {return object is String ? object.isNotEmpty : object ! null;}void _realCheck(Function(bool allCheck) callback) {bool isAllCheck true;_bindObjects.forEach((key, value) {if (!value) {isAllCheck false;return;}});callback.call(isAllCheck);}///清除内存。void clear() {_objects.clear();_bindObjects.clear();_objectWatchers.clear();}///绑定回调执行///需要[WatchableObject]对象的[uuid]做为键值获取对象绑定。T? valueT(double uuid, T? other) {_objectWatchers[uuid]?.onChanged(other);return other;}///绑定设置///需要[WatchableObject]对象的[uuid]做为键值///[watcherCallback]绑定的回调。void watcher(double uuid, WatcherCallback watcherCallback) {_objectWatchers.putIfAbsent(uuid, () watcherCallback);} }
http://www.w-s-a.com/news/806675/

相关文章:

  • 做宣传 为什么要做网站那重庆网站建设公司在线联系
  • 网站设计制作售价多少钱制作图片的软件是
  • 网站验证码目录简单带数据库的网站模版
  • 制作网站用c#做前台网站建设专题的意义
  • 广西建设职业技术学院教育网站牡丹区建设局网站
  • 网站后台怎么用ftp打开上海外贸进出口有限公司
  • 淘宝建设网站的意义大学生做那个视频网站
  • 如何提高你的网站的粘性建设银行流水网站
  • 微信h5在哪个网站做泰州专业网站制作公司
  • 现在.net做网站的多吗建设工程造价网
  • pc访问手机网站跳转违法网站开发人员
  • 网站前端做报名框wordpress 启动慢
  • 沈阳做网站客户多吗前端可以做网站吗
  • 网站设计规划书新媒体营销策略分析
  • dw个人网站主页怎么做天津工程信息建设网
  • 顺义做网站的公司网站页面设计基础教程
  • 安阳哪个公司做网站好企业没有做网站有的坏处
  • 网站开发有必要用php框架wordpress分页导航代码
  • wordpress建站seo鞍山制作网站哪家好
  • 网站空间流量查询上海门户网站制作
  • 网站开发技术是什么专业会的加强普法网站和普法网络集群建设
  • 上海建筑网站seo 推广
  • 乌兰察布做网站公司爱站网关键词挖掘工具站长工具
  • 白银网站建设白银申请网站空间怎么做
  • 免费炫酷网站模板网站建设需要用到什么软件有哪些
  • 电商网站开发 文献综述大型网站建设企业
  • 如何在建设部网站补录项目单仁牛商
  • 社保网站上做减员一直不审核软件程序开发
  • 网站友情链接购买天元建设集团有限公司资质
  • 南山商城网站建设哪家技术好株洲seo网站优化软件