依赖管理包介绍

文章目录

  • 1. 概念介绍
  • 2. 思路与方法
    • 2.1 实现思路
    • 2.2 相关组件
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"使用get进行依赖管理"相关的内容,本章回中将介绍如何使用get进行状态管理一.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

在Flutter开发中状态管理是必不可少的内容,我们在前面章回中介绍过这方面的内容,同时介绍了常用的状态管理组件:Provider.本章回中我们将介绍Get包中的状
态管理组件:GetBuilder,以及如何使用GetBuilder组件来管理状态。

2. 思路与方法

2.1 实现思路

使用GetBuilder组件实现状态管理的方法和使用Provider实现状态管理的方法类似,下面是具体的实现思路:

  • 创建一个数据模型类,用来管理数据,通常用是创建GetxController类的子类;
  • 在数据模型类中创建更新数据的方法,更新数据时调用父类的update方法;
  • 在页面中使用GetBuilder组件监听数据变化,并且把更新后的数据同步到该组件中生成的组件上;
  • 在页面中通过依赖管理获取到数据模型类对象, 并且调用调用更新数据的方法来更新数据;
    上面介绍的实现思路比较抽象,我们将在后面的小节中通过示例代码来演示。如果大家熟悉Provider的话,就会发现该思路和Provider基本上一样,不一样的地方是该
    思路中没有在main方法中设置providers,而是通过依赖管理来获取数据模型对象。还有就是一些细节上不同,比如,数据模型类的父类和监听数据更新的组件。稍后,
    我们将对这些中用到的组件进行详细的介绍。

2.2 相关组件

在上面介绍的实现思路中我们用到了GetxController类,它类似ChangeNotifier类,主要用来管理数据的更新,它也提供了update()方法来更新数据模型中的数
据,该方法的功能和notifyListeners()方法完全相同。上面思路中使用的GetBuilder组件主要用来监听数据变化,并且把更新后的数据同步到该组件中生成的组件
上,它生成组件时通过builder属性来实现,这个属性的用法类似官方同名的属性。GetBuilder组件类似Consumer组件,它们的用法十分相似。我们在这里就展开介
绍了,大家看一下示例代码就能明白它的用法。

3. 示例代码

///这个是配合GetBuilder使用的数据模型类
class ValueController extends GetxController {
  int iValue = 0;
  String strValue = "default string";

   ///
  void updateValue() {
    iValue = 666;
    strValue = "new String Value";
    update();
  }
}

///在页面中显示数据,页面中的数据会随着数据模型中的数据更新而更新
GetBuilder<ValueController>(
  ///init可以加也可以不加,GetBuilder会自动获取该对象
  init: ValueController(),
  builder: (controller) {
    return Text("intValue: ${controller.iValue.toString()}, strValue: ${controller.strValue}");
  }
),


///put方法通过依赖注入来初始化实例对象,然后更新数据
var getController = Get.put(ValueController());
getController.updateValue();
///使用了依赖管理技术获取实例并且更新数据
// Get.find<ValueController>().updateValue();

上面示例代码完全按照前面小节中的实现思路来编写,大家重点关注一下数据模型类的写法,GetBuilder生成子组件方法以及通过数据模型对象来更新数据的方法。我在
这里就不演示程序的运行结果了,建议大家亲自动手去实践,把更新数据的方法封装到按钮中,然后点击按钮就可以看到页面中的数据被更新了。

4. 内容总结

最后,我们对本章回中的内容做一个全面总结:

  • Get包中通过GetBuilder和GetxController来实现状态管理功能,实现的思路和Provider包相似,只是实现细节不同;
  • Get包中的状态管理使用了依赖管理技术,因此不需要专门设置providers,而且获取数据模型对象也比较方便,这些功能优于Provider包;
  • Get包中的状态管理在性能上优于Provider包,不过这是官方文档的介绍,我没有做过具体的性能分析;
    看官们,与"使用get进行状态管理"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【计算机毕设】SpringBoot海滨体育馆管理系统设计与实现 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 引言 体育馆作为重要的体育场馆&#xff0c;承担着举办体育赛事、健身活动和文化演出等多种功能。为了提高体育馆的管理效率和服务质量&#xff0c;本项目旨在…

2024-05-31 blue-VH-driver-问题分析-有状态的服务-状态的处理

摘要: VH的driver对上层提供的接口&#xff0c;是会保持状态。这个状态&#xff0c;可以分为&#xff0c;查询的数据的状态&#xff0c;主要是为了提供翻页查询的功能。另一种状态&#xff0c;就是订阅。 有状态的服务: 状态是什么? 其实从调用方的角度更好的理解&#xff0c…

进程与线程(三)

进程与线程&#xff08;三&#xff09; 进程间通信传统间的进程间通信机制无名管道无名管道的特征无名管道的创建父子进程通信测试管道的大小管道读写易出现的问题 有名管道创建有名管道有名管道的写端代码有名管道的读端代码 信号信号的特征产生信号硬件来源软件来源发送信号的…

【MATLAB】概述1

非 ~ 注释 % 定义 >> 数组 赋值 赋值&#xff1a;>> x1 函数 数组 x[x1,x2] 行向量&#xff08;&#xff0c;or ) x[x1;x2] 列向量 x. 转置等间隔向量 1-10 向量&#xff1a;>>xlinspace(1,10,10) 矩阵 矩阵&#xff1a;>>A[1,2,3;4,5,6;7,8,9] …

重生之 SpringBoot3 入门保姆级学习(10、日志基础与使用)

重生之 SpringBoot3 入门保姆级学习&#xff08;10、日志基础使用&#xff09; 3.1 日志基础3.2 使用日志3.2.1 基础使用3.2.2 调整日志级别3.2.3 带参数的日志 3.1 日志基础 SpringBoot 默认使用 SLF4j&#xff08;Simple Logging Facade for Java&#xff09;和 Logback 实现…

Django ORM魔法:用Python代码召唤数据库之灵!

探索Django ORM的神奇世界&#xff0c;学习如何用Python代码代替复杂的SQL语句&#xff0c;召唤数据库之灵&#xff0c;让数据管理变得轻松又有趣。从基础概念到高级技巧&#xff0c;阿佑带你一步步成为Django ORM的魔法师&#xff0c;让你的应用开发速度飞起来&#xff01; 文…

Adobe Acrobat DC无法卸载

控制版面、电脑管家等均无法卸载&#xff0c;使用自身的remove也不能卸载 解决方法&#xff1a;删除Adobe Acrobat DC的注册表 1、首先打开注册列表&#xff1a; 2、根据圈出来的信息&#xff0c;找到以下路径&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Inst…

c++车票管理系统

这里写自定义目录标题 c车票管理系统vx:sredxc车票管理系统初始页面,需要源码vx:sredxc新增车票信息查询车票信息代码包含完整的发布车票信息,购票,退票,票数检测,余票检测,车票查询等功能 c车票管理系统vx:sredxc 这段代码实现了一个简单的高铁票务管理系统&#xff0c;具有以…

动态路由OSPF单区域和多区域配置实验

动态路由OSPF的配置 OSPF分类两种情况&#xff1a;单区域 多区域路由 OSPF单区域路由配置 OSPF&#xff1a;开放最短路径优先的路由协议。属于大型动态路由协议&#xff0c;适用于中大型的园区网。 网络拓扑&#xff1a; 配置步骤&#xff1a; 1.完成基本配置&#xff08;略&…

如何在测试/线上环境页面访问本地接口?

文章目录 一、前言二、分析三、搭建1、搭建nginx&#xff0c;监听http请求转发2、监听https请求转发 四、总结 一、前言 在工作中&#xff0c;开发完的接口&#xff0c;一般测试的话&#xff0c;基本是使用Postman&#xff0c;如果要到页面测试&#xff0c;就要发版进行测试&a…

5.29工效学-人因工程人机交互

对于工效学这门课&#xff0c;一直都感觉很有意思&#xff0c;是一个值得再认真一点的课。可惜上课的时候效率不高&#xff0c;有感兴趣的东西课后也没有自行去拓展开来&#xff0c;前面的课我感觉还讲了比较重要的东西&#xff0c;但是&#xff0c;全忘了呢&#xff08;真的对…

8、资源操作 Resource

目录 8.1、Spring Resources概述补充&#xff1a;什么是 low-level 资源&#xff1f;1. 文件系统资源2. 类路径资源3. URL资源4. 内嵌资源5. InputStream资源6. ServletContext资源示例代码结论 8.2、Resource接口8.3、Resource的实现类8.3.1、UrlResource访问网络资源1&#x…

华为设备配置静态路由和默认路由

华为设备配置静态路由和默认路由 理论部分知识&#xff1a; 路由分为两个大类&#xff1a;静态路由-----动态路由 静态路由&#xff1a;手工指定&#xff0c;适用于小规模的网络应用场景&#xff0c;如果网络规模变大&#xff0c;这样的方式非常不适合而且容易出错。 语法&…

C#使用GDI对一个矩形进行任意角度旋转

C#对一个矩形进行旋转GDI绘图&#xff0c;可以指定任意角度进行旋转 我们可以认为一张图片Image&#xff0c;本质就是一个矩形Rectangle,旋转矩形也就是旋转图片 在画图密封类 System.Drawing.Graphics中&#xff0c; 矩形旋转的两个关键方法 //设置旋转的中心点 public v…

初识C++ · 模拟实现list

目录 前言 1 push_back pop_back 2 迭代器类 2.1 ! 2.2 -- 2.3 * 3 Print_List 4 有关自定义类型 5 有关const迭代器 6 拷贝构造 赋值 析构 Insert erase 前言 有了string&#xff0c;vector的基础&#xff0c;我们模拟实现list还是比较容易的&#xff0c;这里同…

基于LQR控制算法的电磁减振控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于LQR控制算法的电磁减振控制系统simulink建模与仿真。仿真输出控制器的收敛曲线。 2.系统仿真结果 3.核心程序与模型 版本&#xff1a;MATLAB2022a 08_029m 4.系统原理…

XXE漏洞简介

目录 漏洞原理 漏洞危害 前置知识 XML简介 DTD简介 DTD的两种声明方式 实体 实体分类 内置实体(Built-inentities) 字符实体&#xff08;Characterentities&#xff09; 通用实体&#xff08;Generalentities&#xff09; 参数实体(Parameterentities) XXE漏洞…

算法每日一题(python,2024.05.24) day.6

题目来源&#xff08;力扣. - 力扣&#xff08;LeetCode&#xff09;&#xff0c;简单&#xff09; 解题思路&#xff1a; 排序&#xff0b;双指针 先将两个数组进行排序&#xff0c;cursor1和cursor分别指向两个数组的首位&#xff0c;比较两个指针所指的值的大小&#xff0…

iotdb时序库在火电设备锅炉场景下的实践【原创文字,IoTDB社区可进行使用与传播】

一.概述 1.1 说明 本文章主要介绍iotdb数据库在电站锅炉工业场景下&#xff0c;对辅助智能分析与预警的使用介绍。 【原创文字&#xff0c;IoTDB社区可进行使用与传播】 1.2 项目背景 随着人工智能算法在电力领域的发展&#xff0c;以及燃煤锅炉设备精细化调整需求的增加&…

Java Apache Jaccard文本相似度匹配初体验

文章目录 前言一、文本相似度算法的选择二、常见的文本相似度算法介绍三、使用示例1、引入jar包2、方法示例3、Jaccard源码剖析4、Jaccard源码解释 写在最后 前言 产品今天提了个需求&#xff0c;大概是这样的&#xff0c;来&#xff0c;请看大屏幕。。。额。。。搞错了&#…