当前位置: 首页 > news >正文

GetX的一些高级API

目录

前言

一、一些常用的API

二、局部状态组件

1.可选的全局设置和手动配置

2.局部状态组件

1.ValueBuilder

1.特点

2.基本用法

2.ObxValue

1.特点

2.基本用法


前言

        这篇文章主要讲解GetX的一些高级API和一些有用的小组件。

一、一些常用的API

        GetX提供了一些高级的API。常用的一些API如下:

图1.一些高级API用法

// 给出当前页面的args。
Get.arguments

//给出以前的路由名称
Get.previousRoute

// 给出要访问的原始路由,例如,rawRoute.isFirst()
Get.rawRoute

// 允许从GetObserver访问Rounting API。
Get.routing

// 检查 snackbar 是否打开
Get.isSnackbarOpen

// 检查 dialog 是否打开
Get.isDialogOpen

// 检查 bottomsheet 是否打开
Get.isBottomSheetOpen

// 删除一个路由。
Get.removeRoute()

//反复返回,直到表达式返回真。
Get.until()

// 转到下一条路由,并删除所有之前的路由,直到表达式返回true。
Get.offUntil()

// 转到下一个命名的路由,并删除所有之前的路由,直到表达式返回true。
Get.offNamedUntil()

//检查应用程序在哪个平台上运行。
GetPlatform.isAndroid
GetPlatform.isIOS
GetPlatform.isMacOS
GetPlatform.isWindows
GetPlatform.isLinux
GetPlatform.isFuchsia

//检查设备类型
GetPlatform.isMobile
GetPlatform.isDesktop
//所有平台都是独立支持web的!
//你可以知道你是否在浏览器内运行。
//在Windows、iOS、OSX、Android等系统上。
GetPlatform.isWeb


// 相当于.MediaQuery.of(context).size.height,
//但不可改变。
Get.height
Get.width

// 提供当前上下文。
Get.context

// 在你的代码中的任何地方,在前台提供 snackbar/dialog/bottomsheet 的上下文。
Get.contextOverlay

// 注意:以下方法是对上下文的扩展。
// 因为在你的UI的任何地方都可以访问上下文,你可以在UI代码的任何地方使用它。

// 如果你需要一个可改变的高度/宽度(如桌面或浏览器窗口可以缩放),你将需要使用上下文。
context.width
context.height

// 让您可以定义一半的页面、三分之一的页面等。
// 对响应式应用很有用。
// 参数: dividedBy (double) 可选 - 默认值:1
// 参数: reducedBy (double) 可选 - 默认值:0。
context.heightTransformer()
context.widthTransformer()

/// 类似于 MediaQuery.of(context).size。
context.mediaQuerySize()

/// 类似于 MediaQuery.of(context).padding。
context.mediaQueryPadding()

/// 类似于 MediaQuery.of(context).viewPadding。
context.mediaQueryViewPadding()

/// 类似于 MediaQuery.of(context).viewInsets。
context.mediaQueryViewInsets()

/// 类似于 MediaQuery.of(context).orientation;
context.orientation()

///检查设备是否处于横向模式
context.isLandscape()

///检查设备是否处于纵向模式。
context.isPortrait()

///类似于MediaQuery.of(context).devicePixelRatio。
context.devicePixelRatio()

///类似于MediaQuery.of(context).textScaleFactor。
context.textScaleFactor()

///查询设备最短边。
context.mediaQueryShortestSide()

///如果宽度大于800,则为真。
context.showNavbar()

///如果最短边小于600p,则为真。
context.isPhone()

///如果最短边大于600p,则为真。
context.isSmallTablet()

///如果最短边大于720p,则为真。
context.isLargeTablet()

///如果当前设备是平板电脑,则为真
context.isTablet()

///根据页面大小返回一个值<T>。
///可以给值为:
///watch:如果最短边小于300
///mobile:如果最短边小于600
///tablet:如果最短边(shortestSide)小于1200
///desktop:如果宽度大于1200
context.responsiveValue<T>()

二、局部状态组件

1.可选的全局设置和手动配置

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.局部状态组件

1.ValueBuilder

        ValueBuilder 是 GetX 提供的一个轻量级的状态管理小部件,用于在 Flutter 中快速创建一个具有本地状态的组件。与 Obx 和 GetX 不同,ValueBuilder 更适合那些不需要被多个小部件观察或响应的状态变量,通常用于简单的状态控制。

1.特点

        ValueBuilder的特点如下:

  1. 适用于需要本地状态的小部件

  2. 不需要 Controller,也不涉及全局状态

  3. 状态变化时,ValueBuilder 只会重建小部件内部的 builder 方法,而不会重建整个页面

2.基本用法

        假设我们要实现一个按钮,用于点击切换显示文字的状态。我们可以使用 ValueBuilder 来管理这个本地状态。

        示例效果图如下:

图2.ValueBuilder切换文字状态

        我们看一下核心的代码:

import 'package:flutter/material.dart';
import 'package:get/get.dart';class ValueBuilderExample extends StatelessWidget {const ValueBuilderExample({super.key});@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(backgroundColor: Colors.purple,title: const Text("GetX |ValueBuilder用法")),body: Center(child: ValueBuilder<bool?>(initialValue: true, // 设置初始值builder: (value, update) => Column(mainAxisAlignment: MainAxisAlignment.center,children: [Text(value == true ? "Hello, World!" : "Goodbye, World!"),const SizedBox(height: 20),ElevatedButton(onPressed: () => update(!(value ?? false)), // 切换状态child: const Text("Toggle Message"),),],),onUpdate: (value) {debugPrint("Value updated: $value");},onDispose: () {debugPrint("ValueBuilder disposed");},),),);}
}

        在上面的代码中:

        运行上述代码后:

  1. ValueBuilder 会初始化状态为 true。
  2. 点击按钮时,update 函数会切换状态,使得页面文本在 “Hello, World!” 和 “Goodbye, World!” 之间切换。
  3. 每次状态变化时,onUpdate 会打印新的状态值。
  4. 当页面被销毁时,onDispose 会在控制台打印信息,表示资源已被释放。

        

2.ObxValue

        ObxValue 是 GetX 提供的一个轻量级响应式小部件,用于监听一个单独的可观察变量(Rx 类型),并在其值发生变化时自动刷新 UI。与 Obx 类似,ObxValue 的优势在于它更为简洁,适合那些只需要监听单个变量更新的小部件。

1.特点

ObxValue的特点如下:

  1. 轻量级:只监听一个单一的 Rx 变量

  2. 简单的UI更新:不需要 Controller,也不涉及全局状态

  3. 常用于局部状态:状态变化时,ValueBuilder 只会重建小部件内部的 builder 方法,而不会重建整个页面

2.基本用法

        下面是一个简单示例,展示了如何使用 ObxValue 来更新计数器的值。

import 'package:flutter/material.dart';
import 'package:get/get.dart';class ObxValueExample extends StatelessWidget {// 定义一个 RxInt 类型的计数器变量final counter = 0.obs;@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("ObxValue Example")),body: Center(child: ObxValue<RxInt>((value) => Text('Counter: ${value.value}',style: const TextStyle(fontSize: 24),),counter, // 监听 counter 变量),),floatingActionButton: FloatingActionButton(onPressed: () {counter.value++; // 更新 counter 值,自动刷新 UI},child: const Icon(Icons.add),),);}
}

      ObxValue 通过简化的响应式机制,让我们可以更轻松地管理和更新单个状态变量。与 Obx 相比,它对只需监控单个变量的场景尤为适用,使得代码更直观。

相关文章:

GetX的一些高级API

目录 前言 一、一些常用的API 二、局部状态组件 1.可选的全局设置和手动配置 2.局部状态组件 1.ValueBuilder 1.特点 2.基本用法 2.ObxValue 1.特点 2.基本用法 前言 这篇文章主要讲解GetX的一些高级API和一些有用的小组件。 一、一些常用的API GetX提供了一些高级…...

【笔面试常见题:三门问题】用条件概率、全概率和贝叶斯推导

1. 问题介绍 三门问题&#xff0c;又叫蒙提霍尔问题&#xff08;Monty Hall problem&#xff09;&#xff0c;以下是蒙提霍尔问题的一个著名的叙述&#xff0c;来自Craig F. Whitaker于1990年寄给《展示杂志》&#xff08;Parade Magazine&#xff09;玛丽莲沃斯莎凡特&#x…...

刘艳兵-DBA011-应用使用Oracle数据库,必须启动哪些服务?

应用使用Oracle数据库&#xff0c;必须启动哪些服务&#xff08; &#xff09; A OracleServiceSID B OracleJobSchedulerSID C OracleMTSRecoveryService D OracleHOME_NAMETNSListener 答&#xff1a; A OracleServiceSID D OracleHOME_NAMETNSListener…...

注释多行代码的vim插件

编写vim 插件代码 add_comments.vim function! AddComment()let l:comment #if &filetype cpplet l:comment //elseif &filetype clet l:comment //endiflet [l:start, l:end][ line("<"), line(">") ]let l:commented_lines []for …...

Docker 安装HomeAssistant智能家居系统

HomeAssistant 介绍 简介 Home Assistant是一个自由开源的智能家居自动化平台&#xff0c;它可以控制并监测各种智能家居设备、传感器和其他物联网设备。Home Assistant可以运行在树莓派、NVIDIA Jetson Nano等低功耗设备上&#xff0c;使用户可以快速搭建自己的智能家居系统。…...

21 Docker容器集群网络架构:四、Docker集群网络验证

文章目录 Docker容器集群网络架构:四、Docker集群网络验证4.1 创建网络4.2 查看创建的网络4.2.1 查看节点1创建的网络4.2.2 查看节点2创建的网络4.2.3 查看节点3创建的网络4.3 运行容器并查看4.3.1 运行容器4.3.2 节点1查看4.3.3 节点2查看4.3.4 节点3查看Docker容器集群网络架…...

【Kaggle | Pandas】练习5:数据类型和缺失值

文章目录 1. 获取列数据类型.dtype / .dypes2. 转换数据类型.astype()3. 获取数据为空的列 .isnull()4. 将缺少值替换并且排序.fillna()&#xff0c;.sort_values() 1. 获取列数据类型.dtype / .dypes 数据集中points列的数据类型是什么&#xff1f; # Your code here dtype …...

《YOLO 目标检测》—— YOLO v4 详细介绍

文章目录 一、整体网络结构1. YOLO v4 网络结构图2.对之前版本改进创新的概括 二、对改进创新部分的具体介绍1. 输入端创新2. Backbone主干网络创新CSPDarknet53Mish激活函数Dropblock正则化 3. 特征融合创新SPP模块PAN结构 4. Prediction输出层创新&#xff08;未写完&#xf…...

Ubuntu:通过ssh链接另外一台Ubuntu

本文将介绍通过ssh链接另外一台Ubuntu的方法。 一、安装openssh-server sudo apt update sudo apt install openssh-server二、查看SSH是否运行 sudo systemctl status ssh三、链接 ssh usernameremote_ip_address四、复制A电脑的文件到本地 scp usernameremote_ip_addres…...

黄山谷捷提交创业板IPO注册,募资扩产提升综合竞争力

近日&#xff0c;黄山谷捷股份有限公司&#xff08;下文称“黄山谷捷”&#xff09;申请深交所创业板IPO审核状态变更为“提交注册”。据悉&#xff0c;本次IPO黄山谷捷拟募资50,201.19万元&#xff0c;分别用于功率半导体模块散热基板智能制造及产能提升项目&#xff0c;研发中…...

(python)如何进行加密

代码效果是将输入的四个数字每个加上7&#xff0c;然后除以10的余数&#xff0c;接着再将第一个数字和第三个数字对调&#xff0c;第二个数字和第四个数字对调 # 获取用户输入的四位数字符串 list1 input("请输入你四位数密码&#xff1a;") # 初始化一个空列表来存…...

夸克网盘免费扩容 20T 福利,无限次叠加,亲测有效

新用户用夸克 APP 存资源可得 1T 永久存储空间 &#x1f6a8;此方法仅试用于新用户&#xff0c;并且只能在手机上打开夸克 APP 中去领取&#xff01;pc&#xff0c;ipad 都不行&#xff01;&#xff01;&#xff01; 使用手机打开夸克 APP&#xff0c;保存以下资源可获取 1T …...

开源协议类型及长安链开源协议介绍

截至目前&#xff0c;我国参与国际开源社区协作的开发者数量排名全球第二并推出了众多社区活跃度较高的高质量开源项目&#xff0c;是全球开源生态的重要贡献力量&#xff0c;但在开源治理方面我国还处于发展初期&#xff0c;大部分开发者对开源的印象还限于开放代码、免费使用…...

SQL Server 可观测最佳实践

SQL Server 简介 SQL Server 是微软公司开发的一款关系数据库管理系统&#xff0c;支持企业 IT 环境中的各种事务处理、商业智能和分析应用程序。它支持多种操作系统平台&#xff0c;而无论是物理还是虚拟形式&#xff0c;自建部署环境还是在云环境中&#xff0c;运行的操作系…...

青少年编程能力等级测评CPA Python编程(一级)

青少年编程能力等级测评CPA Python编程(一级) &#xff08;考试时间90分钟&#xff0c;满分100分&#xff09; 一、单项选择题&#xff08;共20题&#xff0c;每题3.5分&#xff0c;共70分&#xff09; 下列语句的输出结果是&#xff08; &#xff09;。 print(35*2) A&a…...

WebSocket 连接频繁断开的问题及解决方案

文章目录 WebSocket 连接频繁断开的问题及解决方案1. 引言2. 什么是 WebSocket&#xff1f;2.1 WebSocket 的优势2.2 WebSocket 的工作原理 3. WebSocket 连接频繁断开的常见原因3.1 服务器端问题3.1.1 服务器负载过高3.1.2 服务器配置不当3.1.3 超时设置 3.2 网络问题3.2.1 网…...

[CSP篇] CSP2024 游记(上)

Part.0 前言 在刚刚过去的 CSP-J2024 以及 CSP-S2024 中&#xff0c;不知大家十分用自己最好的状态参加了这次重要的测试&#xff0c;取得了令自己努力的成绩呢&#xff1f; 文章发布在 2024 年 11 月 1 日&#xff0c;距离出结果还有 3 − 5 3-5 3−5 天&#xff0c;如有需…...

Mac “屏幕保护程序启动或显示器关闭后需要密码“无效

屏幕保护程序启动或显示器关闭后需要密码只能选择“立即”的解决方法&#xff1a; 在 iPhone mirror中设置&#xff0c;每次询问权限。 参考&#xff1a;https://support.apple.com/en-us/120421...

架构师之路-学渣到学霸历程-35

Nginx的配置文件说明 nginx的学习&#xff0c;到了关键的部分&#xff0c;其实想要学好nginx就一定要了解配置文件&#xff1b;我们看看配置文件是怎么样的&#xff1f; 1、nginx的配置文件路径 不同的安装方式、nginx的配置文件路径也有所不同 源码安装配置文件路径&#…...

2024-10月的“冷饭热炒“--解读GUI Agent 之computer use?phone use?——多模态大语言模型的应用进阶之路

GUI Agent 之computer use&#xff1f;phone use?——多模态大语言模型的进阶之路 1.最新技术事件浅析三、思考和方案设计工具代码部分1.提示词2.工具类API定义&#xff0c;这里主要看computer tool就够了 总结 本文会总结概括这一应用的利弊&#xff0c;然后给出分析和工具代…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...