Getx框架详解

Getx

✍ 经典开场

倘若南风知我意,莫将晚霞落黄昏.

一、什么是Getx

GetX 是 Flutter 上的一个轻量且强大的解决方案:高性能的状态管理、智能的依赖注入和便捷的路由管理。

GetX有三个基本原则:
1、 性能:GetX 专注于性能和最小资源消耗。GetX 打包后的apk占用大小和运行时的内存占用与其他状态管理插件不相上下。
2、效率:GetX语法简洁,保持了极高的性能,能极大地缩短开发时长。
3、结构:GetX可以将界面、路由、逻辑和依赖完全解耦,用起来更加清晰,代码更容易维护。

二、Flutter Getx 路由管理

GetX 为我们封装了 Navigation ,无需 context 可进行跳转,使用 GetX 进行路由跳转非常的简单, 只需要调用 Get.to() 即可进行路由跳转, GetX 路由跳转简化了跳转动画设置 、动画时长定义、动画 曲线设置。

2.1 Getx 路由跳转传值以及接受数据

路由配置
GgetPages: [
        ...
        GetPage(name: "/home", page: () => const ShopPage()),
        ...
],


跳转传值
Get.toNamed("/home",arguments: {
    "id":20
});

接受数据
print(Get.arguments);

三、状态管理

Get有两个不同的状态管理器:响应式状态管理器、简单的状态管理器. 其实可以和这个和Vuex理解差不多,这里不懂的就不多讲了,可以看一下 👉🏼 Vuex 这篇文章.

四、Flutter GetX 其他高级API

4.1 具体可参考官方文档

官方文档

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

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

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

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

五、GetView介绍 以及 GetxController生命周期

GetView 只是对已注册的 Controller 有一个名为 controller 的getter的 const Stateless 的
Widget,如果我们只有单个控制器作为依赖项,那我们就可以使用 GetView ,而不是使用
StatelessWidget ,并且避免了写 Get.Find() 。

5.1 GetView如何使用

第一步 定义一个CountController

import 'package:get/get.dart';
class CountController extends GetxController{
    var count = 0.obs;
    @override
    void onInit() {
        super.onInit();
        print("onInit");
    }
    @overridevoid onReady() {
          super.onReady();
          print("onReady");
    }
    @override
        void onClose() {
          print("onClose");
    }
    void inc(){
          count++;
          update(['first_count']);
    }
    void dec(){
          count--;
          update();
    }
}

第二步 继承GetView并使用状态管理

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../controller/count.dart';
class ShopPage extends GetView<CountController> {
    const ShopPage({super.key});
    @override
    Widget build(BuildContext context) {
        //如果第一次使用还需要put
        Get.put(CountController());
        return Scaffold(
            appBar: AppBar(
               title: const Text("shop"),
            ),
        body: Center(
            child: Column(
                children: [
                Obx(()=>Text("${controller.count}")),
                    ElevatedButton(onPressed: (){
                    controller.inc();
                    }, 
                    child: const Text("加1"))
                ],
            ),
            ),
        );
    }
}

六、Getx

GetX提供路由、主题、多语言、弹窗、状态管理、依赖注入、网络请求封装等等。 但实际上它的各个模块是独立的。对于开发的时候,可以用它的全家桶,也可以从中任取所需的模块到我们的应用中使用。 开发效率嘎嘎猛,希望小伙伴多多支持,下期文章猛料:Getx实战

🧠 完美收官

Do nothing by halves.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值