Flutter GetX的事件监听
import 'package:flutter/material.dart'; import 'package:flutter_code/page/book/bookEntity.dart'; import 'package:get/get.dart'; class MyBook extends StatelessWidget { const MyBook({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Colors.red, //导航背景颜色 title: Text("我的Get"), ), body: myHome(), ); } } class myHome extends StatefulWidget { const myHome({super.key}); @override State<myHome> createState() => _myHomeState(); } class _myHomeState extends State<myHome> { BookEntity bookEntity = Get.find<BookEntity>(); //实例化控制器 @override void initState() { // TODO: implement initState super.initState(); ever(bookEntity.BookId, (value) { print('监听bookId1 $value'); }); // 监听bookId的变化 bookEntity.BookId.listen((value) { print('监听bookId2 $value'); }); everAll([bookEntity.BookId, bookEntity.LetterId], (value) { //BookId与LetterId任意一个发生变化时监听 print('BookId与LetterId任意一个发生变化时监听 $value'); }); bookEntity.addListener(() { //对象中任意一个发生变化就会被监听 print('监听全部_________________________'); }); // count值改变时调用,只执行一次 once( bookEntity.BookId, //监听值 (callback) => print( "once---------${bookEntity.BookId},${bookEntity.LetterId},-----------")); // 值在1秒中不断改变,当值已经超过1秒后,不再改变,才调用,主要是防DDos debounce( bookEntity.BookId, //监听值 (callback) => print( "debounce-----${bookEntity.BookId},${bookEntity.LetterId},-----监听count1的值,停止输入1秒后--执行------")); // // 忽略3秒内的所有变动,有输入值时,3秒内会执行一次,如一直在输入,连续输入9秒,会每隔3秒执行一次 // 用于微信对方正在输入中 interval( bookEntity.BookId, //监听count1的值 (callback) => print( "interval-----${bookEntity.BookId},${bookEntity.LetterId},-----监听count1的值----忽略3秒内的所有变动------")); } @override Widget build(BuildContext context) { return Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Obx(() => Text("bookid: ${bookEntity.BookId}")), ElevatedButton( onPressed: () { bookEntity.setBookId(bookEntity.BookId + 1); }, child: const Text("bookid 加1")), Obx(() => Text("LetterId: ${bookEntity.LetterId}")), ElevatedButton( onPressed: () { bookEntity.setLetterId(bookEntity.LetterId + 1); }, child: const Text("LetterId 加1")), ], ), ); } }