Flutter GetX使用

下载地址:
https://pub-web.flutter-io.cn/packages/get

导入依赖:

dependencies:get: ^4.6.5

导入头文件:

import 'package:get/get.dart';

使用 Obx()GetX<T>()

创建全局数据 Counter,继承 GetxController

class Counter extends GetxController {/// 在使用GetX时,我们必须通过在值的末尾添加以下内容使变量可被观察到 **obs**在值的末尾加上然后,/// 当变量发生变化时,应用程序中依赖它的其他部分将得到通知。var count = 0.obs; // 等同于 RxInt count = 0.obs;increment() => count.value++;
}

添加依赖:

  /// 注入依赖Counter controller = Get.put(Counter());

添加组件 Obx() ,监听显示数据:

/// 监听数据: Obx 返回一个组件
Obx(() => Text('您点击了${controller.count}次'),
),/// GetX<T>() 等同于 Obx()
GetX<Counter>(builder: (_) {return Text('您点击了${_.count}次');},
),

改变数据:

/// 改变数据
controller.increment();

使用 GetBuilder<T>()

创建全局数据 MyController 继承 GetxController

class MyController extends GetxController {var number = 0;add() {number++;update();// 监听数据更新}
}

添加依赖:

  MyController controller = Get.put(MyController());

添加组件 GetBuilder<T> :

              GetBuilder<MyController>(init: controller,initState: (_) {},dispose: (state) {},builder: (_) {return Column(children: [Text('您点击了${_.number}次'),ElevatedButton(child: const Text("Click"),/// 改变数据onPressed: () => _.add(),),],);},),

使用 ValueBuilder<T?>

                /// ValueBuilder 监听数据ValueBuilder<int?>(initialValue: 0,onDispose: () {},onUpdate: (p0) => print("$p0"),builder: (value, updater) {return Column(children: [Text('您点击了$value次'),ElevatedButton(child: const Text("Click"),onPressed: () {value = (value ?? 0) + 1;updater(value);//更新数据},),],);},),

在添加的依赖是全局的,考虑到内存释放问题,在页面deposit的时候需要释放controller

  void dispose() {super.dispose();/// 清除单例数据Get.delete<MyController>();}

如果需要到下一个页面访问该数据,需要使用 Get.find<T>() 函数:

MyController controller = Get.find<MyController>();

数据监听展示:

               GetBuilder(init: controller,builder: (_) {return Column(children: [Text("${controller.number}"),ElevatedButton(child: const Text("Click"),onPressed: () {_.add();// 更新数据,上个页面的数据也会随之改变!!!},),],);},)

此时会出现一个问题,就是如果想创建两个同类型的model(即 runtimeType 相同)需要如何区分呢?这时需要用到 tag 参数,主要下面三个函数:

/// 添加依赖
MyController controller = Get.put(MyController(), tag: "one");
MyController controller = Get.put(MyController(), tag: "two");/// 访问数据
MyController controller = Get.find<MyController>(tag: "one");
MyController controller = Get.find<MyController>(tag: "two");/// 删除数据
Get.delete<MyController>(tag: "one");
Get.delete<MyController>(tag: "two");

上述主要用到 GetX状态管理功能,如果想使用它的路由管理功能需要将 MaterialApp 改为 GetMaterialApp,这时候是不需要 content 的,例如页面 push

Get.to(() => const Page());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/94.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA - equal 和 == 等号比较

号 号比较的是栈中的数据 可以用于基本数据类型和引用类型 对于基本数据类型&#xff0c;数据存储在栈中&#xff0c;因此判断的是值是否相同 对于引用数据类型&#xff0c;栈中存储的是对象在堆中的引用地址&#xff0c;因此比较的是对象在栈中保存的引用&#xff08;地址&a…

基于SpringBoot+Hadoop+Vue的企业网盘系统

完整资料进入【数字空间】查看——baidu搜索"writebug" 1.1.1 选题的背景 随着信息网络技术的迅猛发展&#xff0c;云计算技术从它的概念提出已经开始在实际生产环境中使用了。大部分的东西都已经慢慢云端化&#xff0c;这种新型的技术也受到许多互联网人员的关注&a…

ARM CORETEX M0简介

ARM CORETEX M0简介 1. M0处理器简单框图 处理器内核&#xff1a;逻辑控制与运算 内部总线系统&#xff1a;单总线将处理器与外部的存储器和外部连接&#xff0c;进行数据交互&#xff08;冯诺依曼架构&#xff0c;数据与指令一起&#xff09; NVIC&#xff1a;嵌套向量中断控…

RabbitMQ部署

文章目录 RabbitMQ部署指南1.单机部署1.1.下载镜像1.2.安装MQ RabbitMQ部署指南 RabbitMQ是基于Erlang语言开发的开源消息通信中间件&#xff0c;官网地址&#xff1a;https://www.rabbitmq.com Erlang语言: 面向并发的编程语言&#xff0c;天生为了分布式系统而设计的 1.单机…

好用的网址6

PPT课件网&#xff1a;http://www.pptkj.net/ ImgUpscaler&#xff1a;AI Image Upscaler - Upscale Photo, Cartoons in Batch Free 加强图片 AI Draw&#xff1a;AI Draw | Convert Images to One-Line Drawings with AI ZToDoList&#xff1a;https://www.ztodolis…

elementUI 表格页面层级嵌套过多不及时刷新/错位的解决办法

1.强制刷新(可能会影响性能) //(嵌套过深需要强制刷新数据) forceUpdate() {this.$forceUpdate(); }, 2.页面重新布局(适用于表格错位等问题) 前提需要绑定: <el-form ref"table"></el-form> this.$refs["table"][0].doLayout(); //重新布局

124. 二叉树中的最大路径和

二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root &#xff0c…

JavaScript--改变 HTML 的值

要改变 HTML 元素的值&#xff0c;可以使用以下方法&#xff1a; 1.使用元素节点的 innerText 属性来改变元素的文本内容。 例如&#xff1a;element.innerText 新的文本内容; 2.使用元素节点的 innerHTML 属性来改变元素的 HTML 内容。 例如&#xff1a;element.innerHTML …

java通过url获取视频时长(无需下载文件)

1、导入架包 <!-- jave 核心依赖 --><dependency><groupId>ws.schild</groupId><artifactId>jave-core</artifactId><version>2.4.6</version></dependency><!-- 根据不同操作系统引入不同FFmpeg包 --><!-- wi…

性能测试工具 jmeter 录制脚本,传递 cookie,循环执行接口

目录 前言&#xff1a; 代理录制脚本 循环重复添加接口 登录并传递 cookie 给新建产品接口 循环执行脚本 前言&#xff1a; 在使用JMeter进行性能测试时&#xff0c;录制脚本是一种常用的方法。录制脚本可以帮助你捕获和重放用户与应用程序之间的交互&#xff0c;以模拟真…

【线程概念和线程控制】

目录 1 :peach:线程概念 :peach:1.1 :apple:什么是线程&#xff1f;:apple:1.2 :apple:线程的优点和缺点:apple:1.3 :apple:页表的大小:apple:1.4 :apple:线程异常和用途:apple:1.5 :apple:进程VS线程:apple: 2 :peach:线程控制:peach:2.1 :apple:POSIX线程库:apple:2.2 :apple…

D. Rating System

Problem - D - Codeforces 思路&#xff1a;我们先将输入数据做一个前缀和&#xff0c;能够得到它的变化&#xff0c;然后我们能够发现我们只需要找到两个点&#xff0c;第一个点-第二个点最大即可&#xff0c;因为假如说我们现在到了一峰 // Problem: D. Rating System // Con…

计算机网络概述(一)

因特网概述 网络&#xff0c;互联网与因特网的区别联系&#xff1a; 以上是使用有线和无线链路连接的两个网络。那么&#xff0c;要让这两个网络连接起来&#xff0c;就需要路由器。若干个网络通过多个路由器互联起来&#xff0c;就称为了互联网。 因特网是当今世界上最大的互…

Spring 验证(Validation)、数据绑定(Data Binding)和类型转换(Type Conversion)

验证&#xff08;Validation&#xff09;&#xff1a;Spring提供了验证机制&#xff0c;可以通过使用javax.validation包中的注解和验证器接口实现数据验证。通过在模型对象的属性上添加合适的验证注解&#xff08;如NotNull、Size等&#xff09;&#xff0c;可以在处理请求参数…

Centos安装指定docker版本和docker-compose

目录 一. 直接安装Docker最新镜像源 1. 卸载旧版本的Docker&#xff1a; 2. 安装依赖包&#xff1a; 3. 添加Docker源&#xff1a; 4. 安装Docker&#xff1a; 5. 启动Docker服务&#xff1a; 6. 验证Docker是否安装成功&#xff1a; 二、指定Docker版本安装 1. 查看…

mac电脑 flv转mp4怎么转

mac电脑 flv转mp4怎么转&#xff1f;相信大家平时在电脑上下载视频的时候遇到过这样一个尴尬的事情&#xff0c;下载下来的视频不能被直接打开播放&#xff0c;而是需要使用专门的播放器才能打开查看&#xff0c;例如flv就是这样一种视频格式。大家都知道视频文件的格式种类非常…

Java版spring cloud 本工程项目管理系统源码-全面的工程项目管理

​ ​工程项目管理系统是指从事工程项目管理的企业&#xff08;以下简称工程项目管理企业&#xff09;受业主委托&#xff0c;按照合同约定&#xff0c;代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 如今建筑行业竞争激烈&#xff0c;内卷严重&#xff0c…

计算机中CPU、内存、缓存的关系

CPU&#xff08;Central Processing Unit&#xff0c;中央处理器&#xff09; 内存&#xff08;Random Access Memory&#xff0c;随机存取存储器&#xff09; 缓存&#xff08;Cache&#xff09; CPU、内存和缓存之间有着密切的关系&#xff0c;它们共同构成了计算机系统的核…

【Unity编辑器扩展】编辑器代码一键添加按钮响应事件

此功能能是基于UI变量代码生成工具的改良扩展&#xff1a;【Unity编辑器扩展】UI变量代码自动生成工具(编辑器扩展干货/大幅提高效率)_ui代码自动生成_TopGames的博客-CSDN博客 工具效果预览&#xff1a; UGUI的Button按钮在编辑面板添加响应事件非常繁琐&#xff0c;需要拖个…

微服务:Springboot集成Hystrix实现熔断、降级、隔离

文章目录 前言知识积累Springboot集成Hystrix1、maven依赖引入2、application开启feign的hystrix支持&#xff08;客户端配置限流降级熔断&#xff09;3、入口类增加EnableFeignClients EnableHystrix 开启feign与hystrix4、feign调用增加降级方法服务端配置限流降级熔断(选择使…