Flutter GetX的事件监听

  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_code/page/book/bookEntity.dart';
  3. import 'package:get/get.dart';
  4.  
  5. class MyBook extends StatelessWidget {
  6. const MyBook({super.key});
  7.  
  8. @override
  9. Widget build(BuildContext context) {
  10. return Scaffold(
  11. appBar: AppBar(
  12. backgroundColor: Colors.red, //导航背景颜色
  13. title: Text("我的Get"),
  14. ),
  15. body: myHome(),
  16. );
  17. }
  18. }
  19.  
  20. class myHome extends StatefulWidget {
  21. const myHome({super.key});
  22.  
  23. @override
  24. State<myHome> createState() => _myHomeState();
  25. }
  26.  
  27. class _myHomeState extends State<myHome> {
  28. BookEntity bookEntity = Get.find<BookEntity>(); //实例化控制器
  29.  
  30. @override
  31. void initState() {
  32. // TODO: implement initState
  33. super.initState();
  34. ever(bookEntity.BookId, (value) {
  35. print('监听bookId1 $value');
  36. });
  37.  
  38. // 监听bookId的变化
  39. bookEntity.BookId.listen((value) {
  40. print('监听bookId2  $value');
  41. });
  42.  
  43. everAll([bookEntity.BookId, bookEntity.LetterId], (value) {
  44. //BookId与LetterId任意一个发生变化时监听
  45. print('BookId与LetterId任意一个发生变化时监听 $value');
  46. });
  47.  
  48. bookEntity.addListener(() {
  49. //对象中任意一个发生变化就会被监听
  50. print('监听全部_________________________');
  51. });
  52.  
  53. // count值改变时调用,只执行一次
  54. once(
  55. bookEntity.BookId, //监听值
  56. (callback) => print(
  57. "once---------${bookEntity.BookId},${bookEntity.LetterId},-----------"));
  58.  
  59. // 值在1秒中不断改变,当值已经超过1秒后,不再改变,才调用,主要是防DDos
  60. debounce(
  61. bookEntity.BookId, //监听值
  62. (callback) => print(
  63. "debounce-----${bookEntity.BookId},${bookEntity.LetterId},-----监听count1的值,停止输入1秒后--执行------"));
  64. // // 忽略3秒内的所有变动,有输入值时,3秒内会执行一次,如一直在输入,连续输入9秒,会每隔3秒执行一次
  65. // 用于微信对方正在输入中
  66. interval(
  67. bookEntity.BookId, //监听count1的值
  68. (callback) => print(
  69. "interval-----${bookEntity.BookId},${bookEntity.LetterId},-----监听count1的值----忽略3秒内的所有变动------"));
  70. }
  71.  
  72. @override
  73. Widget build(BuildContext context) {
  74. return Center(
  75. child: Column(
  76. mainAxisAlignment: MainAxisAlignment.center,
  77. children: [
  78. Obx(() => Text("bookid: ${bookEntity.BookId}")),
  79. ElevatedButton(
  80. onPressed: () {
  81. bookEntity.setBookId(bookEntity.BookId + 1);
  82. },
  83. child: const Text("bookid 加1")),
  84. Obx(() => Text("LetterId: ${bookEntity.LetterId}")),
  85. ElevatedButton(
  86. onPressed: () {
  87. bookEntity.setLetterId(bookEntity.LetterId + 1);
  88. },
  89. child: const Text("LetterId 加1")),
  90. ],
  91. ),
  92. );
  93. }
  94. }

Flutter GetX的事件监听的更多相关文章

  1. 26 Flutter仿京东商城项目 购物车之 event_bus事件广播 事件监听

    event_bus 介绍 在前面的课程我们给大家讲过状态管理 Provider 的使用. 通俗的讲状态管理就是:当我们想在多个页面(组件/Widget)之间共享状态(数据),或 者一个页面(组件/Wi ...

  2. java 事件监听 - 鼠标

    java 事件监听 - 鼠标 //事件监听 //鼠标事件监听 //鼠标事件监听有两个实现接口 //1.MouseListener 普通的鼠标操作 //2.MouseMotionListener 鼠标的 ...

  3. Java中的事件监听机制

    鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...

  4. Java自学-图形界面 事件监听

    Swing 如何进行事件监听 示例 1 : 按钮监听 创建一个匿名类实现ActionListener接口,当按钮被点击时,actionPerformed方法就会被调用 package gui; imp ...

  5. Java中用得比较顺手的事件监听

    第一次听说监听是三年前,做一个webGIS的项目,当时对Listener的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...

  6. 4.JAVA之GUI编程事件监听机制

    事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件. ...

  7. Node.js 教程 05 - EventEmitter(事件监听/发射器 )

    目录: 前言 Node.js事件驱动介绍 Node.js事件 注册并发射自定义Node.js事件 EventEmitter介绍 EventEmitter常用的API error事件 继承EventEm ...

  8. .NET事件监听机制的局限与扩展

    .NET中把“事件”看作一个基本的编程概念,并提供了非常优美的语法支持,对比如下C#和Java代码可以看出两种语言设计思想之间的差异. // C#someButton.Click += OnSomeB ...

  9. 让 select 的 option 标签支持事件监听(如复制操作)

    这标题,让option支持事件监听,应该不难的呀,有什么好讲的? 其实还是有的,默认在浏览器代码是无法直接对option标签进行操作的,不仅包括JS事件监听,还是CSS样式设置 查了一些资料,姑且认为 ...

  10. [JS]笔记12之事件机制--事件冒泡和捕获--事件监听--阻止事件传播

    -->事件冒泡和捕获-->事件监听-->阻止事件传播 一.事件冒泡和捕获 1.概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的oncl ...

随机推荐

  1. android开发阶段性技能

    一.初级 1. 拥有娴熟的Java基础,理解设计模式,比如OOP语言的工厂模式要懂得. 2. 掌握Android UI控件.Android Java层API相关使用. 迈向中级,最好再次更新下Java ...

  2. 【最佳实践】MongoDB导入数据时重建索引

    MongoDB一个广为诟病的问题是,大量数据resotore时索引重建非常缓慢,实测5000万的集合如果有3个以上的索引需要恢复,几乎没法成功,而且resotore时如果选择创建索引也会存在索引不生效 ...

  3. [ABC216G] 01Sequence 题解

    01Sequence 题目大意 构造一个满足 \(m\) 个形如 \((l,r,x)\) 的限制条件的 \(01\) 序列,其中 \((l,r,x)\) 表示区间 \([l,r]\) 的和不小于 \( ...

  4. 虹科分享 | HPC调度解决方案:HK-Adaptive在数字卫星图像领域的应用

    2011年3月11日,日本海岸附近发生了9.0级地震.这次地震引发了强大的海啸,并向内陆传播了6英里,不仅使地球的轴心偏移了大约10到25厘米,还导致福岛核电站发生核紧急情况. 为了减少这场灾害的损失 ...

  5. 9.26 多校联测 Day 5 总结

    虽然比赛还没打完,但是因为又罚坐了,提前把总结写出来吧() 看 T1,构造了一会发现大概就是把 b 序列放在 a 的最后面,前面位置填几个数. 先码了暴力,再码正解.但求出来的方案显然不是同一种/fn ...

  6. 栈源代码(c++)

    stack.h #ifndef STACK_H_ #define STACK_H_ #include<iostream> template<class T> struct No ...

  7. springboot项目在docker中运行

    前端时间需要把项目打包到docker中运行,于是就让组员去探索,最后整个过程是这样的. 首先我们做java开发,一般都是使用springboot开发,开发完成,我们需要把springboot项目打包成 ...

  8. Android 应用接入 Firebase Crashlytics 进行崩溃分析上报

    前言 所在公司的项目中有一款应用应客户要求,需要接入 Firebase Crashlytics,在此提前练手,也做个总结.本文以最新的 Gradle 7.5 为例,如果 Gradle 版本比较低,添加 ...

  9. LeetCode-Java:88合并两个有序数组

    题目: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目. 请你 合并 nums2 到 nums1 中 ...

  10. JavaWeb项目中web.xml配置文件<servlet-class>…</servlet-class>中的路径出现问题以及服务器错误的解决办法

    问题如图 原因: 1.改变了 WEB-INF 文件夹下 lib 文件夹下 servlet-api.jar 的路径2.缺失lib文件夹下的 servlet-api.jar,没有添加到库中 解决办法: 不 ...