flutter开发实战-GetX响应式状态管理使用

news/2024/10/22 8:26:48/

flutter开发实战-GetX响应式状态管理使用

GetX是一个简单的响应式状态管理解决方案。GetX是Flutter的一款超轻、功能强大的解决方案。它将高性能状态管理、智能依赖注入和路由管理快速而实用地结合在一起。这里简单使用一下GetX

一、引入GetX

在工程的pubspec.yaml中引入插件

  get: 4.6.5

GetX功能强大,里面包括routes, snackbars, internationalization, bottomSheets, dialogs等等,使用这些功能可以将MaterialApp更改成GetMaterialApp。但是我这里暂时不使用到这些功能。

二、使用GetX

flutter创建后会有一个计数的示例。这里使用GetxController,Controller中定义变量都是可被观察的。

ZCounterController代码如下

class ZCounterController extends GetxController {RxInt timestamp = 0.obs;void getTimestamp() {print("getTimestamp");int cur = DateTime.now().millisecondsSinceEpoch;timestamp.value = cur;}
}

当点击按钮时候,重新获取时间戳,更改timestamp.value的值。

在使用的地方,我们需要实现

final ZCounterController c = Get.put(ZCounterController());

展示用到Obx函数

 Obx(() => Text("获取的timestamp: ${c.timestamp}",style: TextStyle(fontSize: 12, color: Colors.white),)),

点击按钮调用c.getTimestamp();

效果图如下

在这里插入图片描述
使用完整代码如下

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:get/get.dart';class ZGetXPage extends StatefulWidget {const ZGetXPage({super.key});@overrideState<ZGetXPage> createState() => _ZGetXPageState();
}class _ZGetXPageState extends State<ZGetXPage> {@overridevoid initState() {// TODO: implement initStatesuper.initState();}@overridevoid dispose() {// TODO: implement disposesuper.dispose();}@overrideWidget build(BuildContext context) {// Instantiate your class using Get.put() to make it available for all "child" routes there.final ZCounterController c = Get.put(ZCounterController());return Scaffold(appBar: AppBar(title: const Text('测试GetX'),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.center,children: [Container(height: 136,width: 200,color: Colors.blue,alignment: Alignment.center,child: Obx(() => Text("获取的timestamp: ${c.timestamp}",style: TextStyle(fontSize: 12, color: Colors.white),)),),SizedBox(height: 20,),TextButton(onPressed: () {c.getTimestamp();},child: Container(height: 36,width: 100,color: Colors.lightGreen,alignment: Alignment.center,child: Text('点击获取',style: TextStyle(fontSize: 12, color: Colors.white),),),),],)),);}
}class ZCounterController extends GetxController {RxInt timestamp = 0.obs;void getTimestamp() {print("getTimestamp");int cur = DateTime.now().millisecondsSinceEpoch;timestamp.value = cur;}
}

三、小结

flutter开发实战-GetX响应式状态管理使用

学习记录,每天不停进步。


http://www.ppmy.cn/news/1459481.html

相关文章

地址传递,使用uint8的数组解析int, short等类型

当需要使用UINT8去解析所传入的数组类型的时候&#xff0c;我们需要使用到传递地址&#xff0c;再通过数组的形式&#xff0c;通过较小的类型去以数组的类型来解析大的类型。 char 类型是1个字节&#xff0c; 占8位&#xff0c; 使用十六进制表示&#xff0c;如&#xff1a;0x…

Java面试题:请解释Java中的永久代(PermGen)和元空间(Metaspace)的区别

在Java虚拟机&#xff08;JVM&#xff09;的发展历程中&#xff0c;永久代&#xff08;PermGen&#xff09;和元空间&#xff08;Metaspace&#xff09;都是用于存储类元数据的内存区域&#xff0c;但它们在实现和行为上有所不同。以下是它们之间的主要区别&#xff1a; 实现&a…

js设计模式--观察者模式

概述 观察者模式用于在对象之间建立 一对多 的依赖关系&#xff0c;当一个对象状态发生变化时&#xff0c;它的所有依赖者&#xff08;观察者&#xff09;都会收到通知并自动更新。在js中&#xff0c;观察者模式通常由两个角色组成&#xff1a;主体&#xff08;Subject&#x…

MFC中关于CMutex类的学习

MFC中关于CMutex类的学习 最近在项目中要实现两个线程之间的同步&#xff0c;MFC中提供了4个类&#xff0c;分别是CMutex(互斥量)、CCriticalSection(临界区)、CEvent(事件对象)、CSemaphore(信号量)。有关这4个类的说明&#xff0c;大家可以参考微软官方文档&#xff1a; CM…

富格林:正规经验加持交易安全

富格林指出&#xff0c;现货黄金是一种特殊的黄金交易形式&#xff0c;作为最热门的黄金投资受到大家欢迎&#xff0c;进行现货黄金交易需要掌握现货黄金分析技巧和方法&#xff0c;更重要的是要有正规交易经验的加持。现货黄金的安全性大家可以说是毋容置疑的&#xff0c;但也…

UE5材质基础(3)——数学节点篇2

UE5材质基础&#xff08;3&#xff09;——数学节点篇2 目录 UE5材质基础&#xff08;3&#xff09;——数学节点篇2 承接上文Time和lerp配合使用 Floor节点 Ceil节点 Frac节点 Fmod节点 TexCoord节点 If节点 Fresnel节点 CameraPosition节点 CameraVector节点 Pi…

【Node.js从基础到高级运用】二十八、Node.js 内存管理浅析

Node.js 作为一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;其性能和效率在很大程度上取决于内存管理的优劣。 1. Node.js 内存结构 在深入了解内存管理之前&#xff0c;我们需要先了解 Node.js 的内存结构。Node.js 的内存可以大致分为以下几个部分&#xff1a;…

企业微信创建应用(一)

登录到企业微信后台管理(https://work.weixin.qq.com/)进入自建应用(应用管理-应用-创建应用) 3.查看参数AgentId和 Secret 4.企业微信查看效果