首页 > 其他分享 >Flutter之GetX之Obs

Flutter之GetX之Obs

时间:2023-04-05 14:15:15浏览次数:35  
标签:obs name Rx Flutter GetX Obs final 变量

Flutter之GetX之Obs

除了之前说过的GetBuilder,GetX还有其他的状态管理方式

一个后缀就可以把一个变量变得可观察,变量每次改变的时候,使用它的小部件就会被更新

var name = '周杰伦'.obs;

然后通过 Obx 或者 GetX 包裹并使用响应式变量的控件,在变量改变的时候就会被更新

Obx (() => Text (controller.name));

.obs就实现了一个被观察者,他们不再是 int 类型,而是 RxInt 类型。对应的小部件也不再是GetBuilder了,而是下面两种

           GetX<SumController>(
                  builder: (_) {
                    return Text(
                      '${_.count1}',
                      style: TextStyle(fontWeight: FontWeight.bold),
                    );
                  },
                )
               Obx(() => Text(
                      '${Get.find<SumController>().count2}',
                      style: TextStyle(fontWeight: FontWeight.bold),
                    )),

除了通过添加后缀.obs,还有其他方式可以使一个变量变成可观察状态

  1. 使用GetX中的RxType
// 建议使用初始值,但不是强制性的
final name = RxString('');
final isLogged = RxBool(false);
final count = RxInt(0);
final balance = RxDouble(0.0);
final items = RxList<String>([]);
final myMap = RxMap<String, int>({});
  1. 使用泛型Rx
final name = Rx<String>('');
final isLogged = Rx<Bool>(false);
final count = Rx<Int>(0);
final balance = Rx<Double>(0.0);
final number = Rx<Num>(0)
final items = Rx<List<String>>([]);
final myMap = Rx<Map<String, int>>({});

// 自定义类 - 可以是任何类
final user = Rx<User>();

将一个对象转变成可观察的,也有2种方法:

  1. 可以将我们的类值转换为 obs
class RxUser {
  final name = "Camila".obs;
  final age = 18.obs;
}
  1. 或者可以将整个类转换为一个可观察的类。
class User {
  User({String name, int age});
  var name;
  var age;
}

//实例化时。
final user = User(name: "Camila", age: 18).obs;

注意,转化为可观察的变量后,它的类型不再是原生类型,所以取值不能用变量本身,而是.value

虽然这种响应式编程非常好用,但是也不要用的太多了,因为底层其实都是Stream流的实现,用多了之后对内存消耗非常大,而 GetBuilderRAM 中是非常高效的,几乎没有比他更高效的方法。所以这些使用方式在使用过程中要斟酌。

标签:obs,name,Rx,Flutter,GetX,Obs,final,变量
From: https://www.cnblogs.com/r1cardo/p/17289343.html

相关文章

  • Background Removal obs
            BackgroundRemoval/PortraitSegmentation/VirtualGreen-screenv0.5.16GotodownloadAuthorroyshilkrotCreationdateApr15,2021TagsbackgroundgreenscreenportraitremovalsegmentationOverviewU......
  • flutter系列之:在flutter中使用相机拍摄照片
    简介在app中使用相机肯定是再平常不过的一项事情了,相机肯定涉及到了底层原生代码的调用,那么在flutter中如何快速简单的使用上相机的功能呢?一起来看看吧。使用相机前的准备工作flutter中为使用camera提供了一个叫做camera的插件,我们首先需要安装这个插件。安装插件的步骤很简单......
  • flutter系列之:在flutter中使用相机拍摄照片
    目录简介使用相机前的准备工作在flutter中使用camera总结简介在app中使用相机肯定是再平常不过的一项事情了,相机肯定涉及到了底层原生代码的调用,那么在flutter中如何快速简单的使用上相机的功能呢?一起来看看吧。使用相机前的准备工作flutter中为使用camera提供了一个叫做came......
  • flutter系列之:创建一个内嵌的navigation
    目录简介搭建主Navigator构建子路由总结简介我们在flutter中可以使用Navigator.push或者Navigator.pushNamed方法来向Navigator中添加不同的页面,从而达到页面调整的目的。一般情况下这样已经足够了,但是有时候我们有多个Navigator的情况下,上面的使用方式就不够用了。比如我们有一个......
  • Flutter 异步编程指南
    作者:京东物流 王志明1Dart中的事件循环模型在App开发中,经常会遇到处理异步任务的场景,如网络请求、读写文件等。Android、iOS使用的是多线程,而在Flutter中为单线程事件循环,如下图所示Dart中有两个任务队列,分别为microtask队列和event队列,队列中的任务按照先进先出......
  • Flutter和小程序容器技术的应用前景与发展潜力
    随着移动互联网的快速发展,应用程序已经成为人们生活中必不可少的一部分,而小程序和Flutter技术则是当前应用开发中备受瞩目的两大趋势。 小程序是一种轻量化的应用程序,其不需要用户下载安装即可使用,同时也具备了高效便捷的使用体验。而Flutter技术则是一种跨平台的应用开发技术......
  • Microsoft.SqlServer.Management.SqlMgmt.SimpleJobSchedule”上的属性访问器“Schedu
    标题:MicrosoftSQLServerManagementStudio对象“Microsoft.SqlServer.Management.SqlMgmt.SimpleJobSchedule”上的属性访问器“ScheduleRecurrenceAndTimes”发生以下异常:“对象“Microsoft.SqlServer.Management.SqlMgmt.SimpleJobSchedule”上的属性访问器“StartTimeOfD......
  • Flutter中如何取消任务
    前言在开发过程中,取消需求是很常见的,但很容易被忽略。然而,取消需求的好处也很大。例如,在页面中会发送很多请求。如果页面被切走并处于不可见状态,就需要取消未完成的请求任务。如果未及时取消,则可能会导致以下负面影响:消耗用户额外数据流量。任务回调持有全局上下文变量,未及时......
  • flutter基础2
    1.有状态组件StatefulWidgetimport'package:flutter/material.dart';voidmain(){runApp(constMyApp());}classMyAppextendsStatelessWidget{constMyApp({super.key});@overrideWidgetbuild(BuildContextcontext){returnMaterialAp......
  • 观察者模式(Observer)
    1,观察者模式  观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个“观察”该对象的其他对象。  又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会......