flutter使用getx进行数据状态管理,实现页面响应式

无论是什么样的应用,都还是需要最基础的数据来支撑的,而且不同的页面之间可能需要共享数据状态,这就显得数据状态管理非常有必要了。因为我这里使用了get依赖库,所以就可以直接在项目中使用getx来管理状态,不想再使用别的框架了。而且getx使用起来也挺方便的。

在flutter中文网里面还是有许多状态管理依赖库推荐的:状态 (State) 管理参考 - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

但是我这里就讲一下getx的使用,很简单,三步就可以完成使用。

get依赖包地址:get | Flutter Package

添加get依赖

在pubspec.yaml文件中添加所需要的第三方依赖库:

dependencies:flutter:sdk: flutter# The following adds the Cupertino Icons font to your application.# Use with the CupertinoIcons class for iOS style icons.cupertino_icons: ^1.0.2get: ^4.6.6

 

创建store

在项目目录下面创建stores文件夹,用来管理全局的数据状态,可以通过分类将不同的状态封装在不同的dart文件中:

例如user.dart源代码:

import 'package:get/get.dart';class UserInfo extends GetxController {// 用户名字var name = "".obs;// 用户密码var passwd = "".obs;// 用户年龄var age = 0.obs;// 用户权限var power = [].obs;// 以下为周期函数@overridevoid onInit() {print('onInit');super.onInit();}@overridevoid onClose() {// 控制器绑定在路由上的话,路由销毁则触发print('onClose');super.onClose();}@overridevoid onReady() {print('onReady');super.onReady();}// 增加状态管理的数值void addAge() {age.value++;update(); // 调用obx更新数据,不然数据不会更新}// 减少状态管理的数值void setName(String val) {name.value = val;update();}// 修改用户密码void setPasswd(String pw) {passwd.value = pw;update();}// 配置用户权限void addPower(pws) {var pwsTemp = [...power, ...pws];power.value = pwsTemp;}// 清空状态数据void clear() {name.value = "";passwd.value = "";age.value = 0;power.value = [];}
}

在页面中引用 

在main.dart中使用GetMaterialApp创建的app才可以哦,使用后就可以到页面中引入并使用了,直接使用即可,注意需要引入get:

import 'package:get/get.dart';UserInfo user = Get.put(UserInfo());

如果想在页面中使用这个状态数据:

Obx(() => Text("${user.age}")),

想要点击按钮设置里面的值:直接调用里面的方法就好

            ElevatedButton(onPressed: () {print("添加Powers");user.addPower([10]);},child: Text("添加Power:10")),

 

比如我在登录页面添加用户名和密码,到首页就可以看到我的那些数据:

首页展示数据:

 

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

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

相关文章

【笔记】软件下载链接汇总

🎈欢迎加群交流🎈 ✨✨✨https://ling71.cn/hmf.jpg✨✨✨ 浏览器历史版本下载 Firefox史版本下载:(官网) http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ Chrome历史版本、ChromeDriver历史版本&#x…

服务器机房上架交付流程

服务器上架交付 服务器到货验收后,会进行机房机房上架,完成重装系统、网络配置后交付使用 1、到货验收 采购服务器到货后,会联合多部门进行SN、配置、数量等多方面验收,如数量是否匹配,配置是否相符等也会拆开机箱看看…

Python基础知识:整理10 异常相关知识

1 异常的捕获 1.1 基础写法 """基本语法:try:可能发生错误的代码except:如果出现异常,将执行的代码""" try:fr open("D:/abc.txt", "r", encoding"utf-8") except:print("出现异常…

APM传感器校准

文章目录 前言一、校准加速度计二、校准罗盘三、校准陀螺仪四、校平地平线 前言 固件:rover 4.2.3 地面站:独家汉化版QGC 一、校准加速度计 点击左上角软件图标-》载具设置-》传感器-》加速度计 飞控方向默认为None即可,点击确定 点击确…

德语怎么翻译,中文翻译成德文有何要求?

近年来,随着中德之间的贸易往来日益频繁,德语翻译需求在市场上持续升温。那么,如何做好德语翻译,特别是将中文翻译成德文需要注意哪些要求呢? 首先,深入理解中文原文的语境和含义至关重要。中文含蓄且抽象&…

存储的基本架构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、存储的需求背景二、自下而上存储架构总结 一、存储的需求背景 1、人的身份信息需要存储 这种信息可以用关系型数据库,例如mysql,那种表…

c++的宏举例和理解

宏提供了一种机制,能够使你在编译期替换代码中的符号或者语句。当你的代码中存在大量相似的、重复的代码时,使用宏可以极大的减少代码量,便于书写。 // 定义圆周率 #define PI 3.14159265 // 定义一个空指针 #define NULL ((void*)0) // 定…

第十二章 Java内存模型与线程(二)

文章目录 12.4 Java与线程12.4.1 线程的实现12.4.2 Java线程调度12.4.3 状态转换 12.4 Java与线程 12.4.1 线程的实现 实现线程主要有三种方式:使用内核线程实现(1: 1 实现),使用用户线程实现(1&#xff…

CMake入门教程【高级篇】自定义的构建命令add_custom_command

文章目录 1.概述信息2.命令作用3.完整代码示例4. 实际使用中的技巧1.概述信息 add_custom_command是一个非常强大的工具,它允许用户定义在构建过程中执行的自定义命令。这可以用于生成源文件、执行前后处理步骤、自动化测试等。 #mermaid-svg-9icMsOnoxbNTRCu0 {font-family:…

A Charming Algorithm for Count-Distinct

如何估计不重复元素的个数 本文提出一种很有趣的算法,估计一个数列里面不重复元素的个数,关键是它只使用指定大小的内存。 I recently came across a paper called Distinct Elements in Streams: An Algorithm for the (Text) Book by Chakraborty,…

FFmpeg 入门

1. 编译 参考文档:FFmpeg编译和集成(FFmpeg开发基础知识),重点注意这句话: 在MSYS2 Packages可以查到云仓库有哪些包,直接安装可节约大量时间。 注意:这个路径可自定义 吐槽 在看到这篇文章之前,花了大…

腾讯云服务器购买指南,2024更新购买步骤

腾讯云服务器购买流程很简单,有两种购买方式,直接在官方活动上购买比较划算,在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵,但是自定义购买云服务器CPU内存带宽配置选择范围广,活动上购买只能选择固定的活动…

【银行测试】银行项目,信用卡业务测试+常问面试(三)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 银行测试-信用卡业…

产品经理之基础必备知识点

目录 前言 一.用户画像 1.1含义 1.2 举例说明 二.MVP(最小可行产品) 1.1含义 1.2 优缺点 三.体验地图 3.1 含义 3.2 举例说明 四.产品路线图 4.1 含义 4.2 举例说明 五.用户故事 5.1 含义 5.2 举例 六.用户故事地图 七.敏捷开发 7.1 含义 7.2 …

C++I/O流——(3)文件输入/输出(第二节)

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 含泪播种的人一定能含笑收获&#xff…

[M链表] lc82. 删除排序链表中的重复元素 II(单链表+好题+模拟)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:82. 删除排序链表中的重复元素 II 相似题目:[E链表] lc83. 删除排序链表中的重复元素(单链表模拟) 2. 题目解析 这个题目与 83 题都很类似,一个是将重复元素全部删除,另一个…

面试宝典之ElasticSearch面试题

E01、什么是倒排索引? ES分词器通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索…

检索增强生成的多模态信息:综述

英文原文地址:Retrieving Multimodal Information for Augmented Generation: A Survey 随着大型语言模型(LLMs)的流行,出现了一个重要趋势,即使用多模态来增强 LLMs 的生成能力,从而使 LLMs 能够更好地与…

Github项目推荐-clone-voice

项目地址 GitHub - jianchang512/clone-voice 项目简述 一个声音ai工具。基于python编写。作用是音色复用。下面是官方说明:“这是一个声音克隆工具,可使用任何人类音色,将一段文字合成为使用该音色说话的声音,或者将一个声音使…

行为型设计模式——模板方法模式

学习难度:⭐ ,比较常用 模板方法模式 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知&#xff0…