Flutter_学习记录_状态管理之GetX

Flutter GetX 状态管理框架全面解析

1. 状态管理与 Flutter GetX 介绍

1.1 状态管理

通俗理解:当我们需要在多个页面(组件/Widget)之间共享状态(数据),或者在一个页面中的多个子组件之间共享状态时,就可以使用 Flutter 的状态管理方案来统一管理这些状态数据。

目前 Flutter 的状态管理方案有很多:redux、bloc、state、provider、Getx 等。

  • provider 是官方提供的状态管理解决方案
  • Getx 是第三方状态管理插件,不仅具有状态管理功能,还集成了路由管理、主题管理、国际化多语言管理、Obx 局部更新、网络请求等强大功能

1.2 Flutter GetX 介绍

GetX 是 Flutter 上一个轻量且强大的解决方案,为我们提供了:

  • 高性能的状态管理
  • 智能的依赖注入
  • 便捷的路由管理

GetX 三大基本原则

  1. 性能:专注于最小资源消耗
  2. 效率:语法简洁,开发效率高
  3. 结构:界面、逻辑、依赖和路由完全解耦

GetX 非常轻量,各功能模块独立,只有用到的功能才会被编译到代码中。

2. GetX 的简单使用

2.1 项目中集成 GetX

pubspec.yaml 中添加 GetX 依赖:

dependencies:get: ^4.6.5

然后运行 flutter pub get 安装依赖。

对于 iOS 开发者,可以使用 appuploader 工具来简化应用打包和上传 App Store 的过程。appuploader 是一款专业的 iOS 开发助手,可以方便地管理证书、描述文件,并直接上传 IPA 文件到 App Store Connect。

2.2 基本配置

main.dart 中,将 MaterialApp 替换为 GetMaterialApp

import 'package:flutter/material.dart';
import 'package:get/get.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return GetMaterialApp(debugShowCheckedModeBanner: true,home: HomePage(),);}
}

3. GetX 的路由管理

3.1 路由配置

GetMaterialApp(initialRoute: "/",getPages: [GetPage(name: "/", page: () => HomePage()),GetPage(name: "/details", page: () => DetailsPage()),],defaultTransition: Transition.rightToLeft,
);

3.2 路由跳转方法

// 普通跳转
Get.to(DetailsPage());// 命名路由跳转
Get.toNamed("/details");// 带参数跳转
Get.toNamed("/details", arguments: {"id": 123});// 接收参数
var args = Get.arguments;

4. GetX 状态管理

4.1 响应式状态管理

声明响应式变量

// 简单方式
final name = ''.obs;
final count = 0.obs;// 自定义类
final user = User().obs;

使用 Obx 更新 UI

Obx(() => Text("${controller.count.value}"));

4.2 GetXController 使用

class CounterController extends GetxController {var count = 0.obs;void increment() {count.value++;}
}// 在页面中使用
final controller = Get.put(CounterController());

5. GetX 国际化配置

5.1 定义语言包

class Messages extends Translations {Map<String, Map<String, String>> get keys => {'zh_CN': {'hello': '你好'},'en_US': {'hello': 'Hello'},};
}

5.2 配置国际化

return GetMaterialApp(translations: Messages(),locale: Locale('zh', 'CN'),fallbackLocale: Locale('en', 'US'),
);

5.3 使用翻译

Text('hello'.tr);

5.4 切换语言

Get.updateLocale(Locale('en', 'US'));

6. 开发工具推荐

对于 Flutter 开发者,特别是需要发布 iOS 应用的开发者,可以使用 appuploader 工具来简化应用打包和上传流程。appuploader 提供了以下功能:

  • 证书和描述文件管理
  • IPA 文件打包
  • 直接上传到 App Store Connect
  • 支持多个开发者账号管理

这些功能可以大大节省开发者在应用发布环节的时间,让开发者能更专注于应用开发本身。

总结

GetX 作为 Flutter 的轻量级框架,提供了完整的状态管理、路由管理和国际化解决方案。它的简洁语法和高性能特性,使其成为 Flutter 开发中的优秀选择。结合 appuploader 这样的开发工具,可以进一步提升开发效率,特别是在应用发布环节。

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

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

相关文章

ASP.NET常见安全漏洞及修复方式

Microsoft IIS 版本信息泄露 查看网页返回的 Header 信息&#xff0c;默认会包含 IIS&#xff0c;ASP.NET 版本信息&#xff1a; 隐藏 Server 标头 编辑 web.config 文件&#xff0c;在 system.webServer 节点中配置 requestFiltering 来移除Server标头&#xff1a; <sec…

深入解析Java日志框架Logback:从原理到最佳实践

Logback作为Java领域最主流的日志框架之一,由Log4j创始人Ceki Glc设计开发,凭借其卓越的性能、灵活的配置以及与SLF4J的无缝集成,成为企业级应用开发的首选日志组件。本文将从架构设计、核心机制、配置优化等维度全面剖析Logback的技术细节。 一、Logback的架构设计与核心模…

OpenStack Yoga版安装笔记(22)Swift笔记20250418

一、官方文档 https://docs.openstack.org/swift/yoga/admin/objectstorage-components.html#https://docs.openstack.org/swift/yoga/admin/objectstorage-components.html# 二、对象存储简介&#xff08;Introduction to Object Storage&#xff09; OpenStack 对象存储&a…

Spring Boot日志系统详解:Logback与SLF4J的默认集成

大家好呀&#xff01;&#x1f44b; 今天我们来聊聊Spring Boot中一个超级重要但又经常被忽视的功能——日志系统&#xff01; 一、日志系统的重要性 首先&#xff0c;咱们得明白为什么日志这么重要&#xff1f;&#x1f937;‍♂️ 想象一下&#xff0c;你正在玩一个超级复…

【AI提示词】退休规划顾问专家

提示说明 随着人口老龄化的加剧&#xff0c;越来越多的人开始关注退休规划问题。一个专业的退休规划顾问可以帮助用户合理规划退休生活&#xff0c;确保退休后的生活质量。 提示词 # 角色 退休规划顾问专家## 注意 1. 专家设计应符合退休规划的专业性和可靠性&#xff0c;帮…

楼梯上下检测数据集VOC+YOLO格式5462张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;5462 标注数量(xml文件个数)&#xff1a;5462 标注数量(txt文件个数)&#xff1a;5462 …

docker 部署服务工具记录

一、场景 项目需要使用dify和向量库milvus, 这两个工具都是使用docker 部署&#xff0c;因此需要安装docker. 二、docker安装 系统为debian , 刚开始安装不是超时&#xff0c;就是依赖版本冲突&#xff0c;查看系统镜像源文件&#xff1a; cat /etc/apt/sources.list 觉得可…

Oracle、MySQL、PostgreSQL三大数据库对比分析

Oracle、MySQL、PostgreSQL 三大数据库的对比分析&#xff0c;结合 Java SpringBoot 项目开发 的实际场景&#xff0c;重点说明分库分表、主从复制的实现难度及案例。 一、数据库核心对比 1. 核心区别与适用场景 维度OracleMySQLPostgreSQL定位企业级商业数据库轻量级开源数据…

Stable Diffusion LoRA模型加载实现风格自由

对于模型微调来说&#xff0c;直接进行微调需要的硬件配置和时间都是相当夸张的&#xff0c;但要想实现风格切换自由&#xff0c;也不是只有模型微调一个方式&#xff0c;LoRA技术可以说很完美的解决了这个难题。无论是二次元画风还是复古胶片质感&#xff0c;都只需要加载小巧…

贪心算法day10(无重叠区间)

1.无重叠区间 435. 无重叠区间 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 代码&#xff1a; class Solution {public static int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals,(v1,v2)->{return v1[0]-v2[0];});int left interva…

Python语言基础教程(上)4.0

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…

PyTorch 浮点数精度全景:从 float16/bfloat16 到 float64 及混合精度实战

PyTorch 在深度学习中提供了多种 IEEE 754 二进制浮点格式的支持&#xff0c;包括半精度&#xff08;float16&#xff09;、Brain‑float&#xff08;bfloat16&#xff09;、单精度&#xff08;float32&#xff09;和双精度&#xff08;float64&#xff09;&#xff0c;并通过统…

在conda环境下使用pip安装库无法import

安装seleniumwire包&#xff0c;conda环境没有&#xff0c;pip之后安装不到当前conda环境 网上的方法都试过了&#xff0c;包括强制安装等 python -m pip install --upgrade --force-reinstall selenium-wire 最后定位应该是没有安装到当前conda的环境下&#xff0c;使用list…

【k8s系列4】工具介绍

1、虚拟机软件 vmware workstation 2、shell 软件 MobaXterm 3、centos7.9 下载地址 &#xff08;https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/?spma2c6h.25603864.0.0.374bf5adOaiFPW&#xff09; 4、上网软件

ApiHug 前端解决方案 - M1 内侧

背景 ApiHug UI 解决方案 - ApiHug前后端语义化设计&#xff0c;节约80%以上时间https://apihug.github.io/zhCN-docs/ui 现代前端框架日趋SPA(Single Page Application)化&#xff0c;给前后协同都带来了挑战&#xff0c;ApiHug试图减少多人在前后协同带来的理解难度&#x…

【人工智能】DeepSeek 与 RAG 技术:构建知识增强型问答系统的实战

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 本文深入探讨了如何利用 DeepSeek R1 模型结合检索增强生成(RAG)技术,构建一个高效的知识增强型问答系统。RAG 技术通过结合信息检索与生…

强大的AI网站推荐(第五集)—— Suno

网站&#xff1a;Suno 号称&#xff1a;被许多用户称为“最强音乐类AI” 博主评价&#xff1a;早在去年1月&#xff0c;我就已经开始使用过了&#xff0c;从小就有一个音乐梦&#xff0c;奈何五音不全&#xff0c;现在用这个来进行创作音乐&#xff0c;有想AI创造音乐的可以试试…

Sigma-Delta ADC(ΣΔ-ADC)中的量化器简介

Sigma-Delta ADC&#xff08;ΣΔ-ADC&#xff09;是一种高精度的模数转换器&#xff0c;其中的量化器是其核心组件之一。量化器负责将模拟信号转换为数字信号&#xff0c;并通过独特的噪声整形技术实现高分辨率。接下来&#xff0c;我们将深入了解量化器的各个方面&#xff1a…

Oracle日志系统之附加日志

Oracle日志系统之附加日志 在 Oracle 数据库中&#xff0c;附加日志&#xff08;Supplemental Log&#xff09;是一种增强日志记录的机制&#xff0c;用于在数据库的 redo log 中记录更多的变更信息&#xff0c;尤其是在进行数据迁移、复制和同步等任务时&#xff0c;能够确保…

使用源码编译安装golang的docker版

编译规则 1.4之前用C写的&#xff0c;1.4可编译后续一直到1.9版本&#xff0c;后续版本实现了自举&#xff0c;后续版本是go写的&#xff0c;基本上相互低2个版本能编译出新版本。 Go < 1.4&#xff1a;C 工具链。 1.5 < Go < 1.19&#xff1a;Go 1.4 编译器。 1.20…