先说结论:感谢 GetX 让我节省了很多代码时间,这是一款被严重低估的 Flutter 组件,被认为设计的过于简单、没有深度、无人维护啥啥的。 很多开发者在讨论 GetX 是否已经放弃维护,但实际上并非如此。GetX 目前正集中精力开发 5.0 版本,同时也在维护 4.x 版本,最新更新已达到 4.7.2。社区内一些人常常拿其他状态管理库来与 GetX 对比,然而作为一个使用过 Bloc、Provider 和 Riverpod 的开发者,我认为 GetX 完全不逊色于它们,而且使用起来非常简单。 值得强调的是,GetX 本身是一个工具库,涵盖了状态管理、依赖注入、导航、扩展、HTTP 通信、多语言、对话框和防抖等多种功能。这些特性使得 GetX 在开发中非常高效和便捷。

Flutter GetX 4.7.2 发布:被严重低估的强大框架

Flutter GetX 4.7.2

视频

https://youtu.be/BAgTUSbVHlI

https://www.bilibili.com/video/BV1oHPaeXErV/

前言

原文 GetX 框架:简洁、高效的 Flutter 开发工具

先说结论:感谢 GetX 让我节省了很多代码时间,这是一款被严重低估的 Flutter 组件,被认为设计的过于简单、没有深度、无人维护啥啥的。

很多开发者在讨论 GetX 是否已经放弃维护,但实际上并非如此。GetX 目前正集中精力开发 5.0 版本,同时也在维护 4.x 版本,最新更新已达到 4.7.2。社区内一些人常常拿其他状态管理库来与 GetX 对比,然而作为一个使用过 Bloc、Provider 和 Riverpod 的开发者,我认为 GetX 完全不逊色于它们,而且使用起来非常简单。

值得强调的是,GetX 本身是一个工具库,涵盖了状态管理、依赖注入、导航、扩展、HTTP 通信、多语言、对话框和防抖等多种功能。这些特性使得 GetX 在开发中非常高效和便捷。

参考

GetX 优点

社区热度 Github Star 10.6K

bloc 12k , riverpod 6.5k

所以说 getx 社区认可度还是可以的

https://github.com/jonataslaw/getx

https://github.com/jonataslaw/getx/graphs/contributors

非常多的人参与到这个项目中。

GetBuilder 手动触发方式性能更好

试图 view

  // 滚动图
  Widget _buildBanner(BuildContext context) {
    return GetBuilder<ProductDetailsController>(
        id: "product_banner",
        tag: tag,
        builder: (_) {
          return CarouselWidget(
            // 打开大图预览
            onTap: controller.onGalleryTap,
            // 图片列表
            items: controller.bannerItems,
            // 当前索引
            currentIndex: controller.bannerCurrentIndex,
            // 切换回调
            onPageChanged: controller.onChangeBanner,
            // 高度
            height: 190.w,
            // 指示器圆点
            indicatorCircle: false,
            // 指示器位置
            indicatorAlignment: MainAxisAlignment.start,
            // 指示器颜色
            indicatorColor: context.colors.scheme.secondary,
          );
        }).backgroundColor(context.colors.scheme.surface);
  }

控制器 触发更新

  // Banner 切换事件
  void onChangeBanner(int index, reason) {
    bannerCurrentIndex = index;
    update(["product_banner"]); // 手动刷新 Banner
  }

全自动依赖管理视图、控制器创建释放

自动处理依赖

防止 StatefulWidgets 滥用

采用 GetBuilder + StatelessWidget 的方案非常干净。

class ApplyPromoCodePage extends StatelessWidget {
  const ApplyPromoCodePage({
    super.key,
    required this.onApplyCouponCode,
  });

  // 主视图
  Widget _buildView(BuildContext context) {
    return ...
  }

  @override
  Widget build(BuildContext context) {
    return GetBuilder<ApplyPromoCodeController>(
      init: ApplyPromoCodeController(),
      id: "apply_promo_code",
      builder: (_) {
        return _buildView(context);
      },
    );
  }
}

轻松多语言

同构 tr 扩展来调用

TextWidget.h4(LocaleKeys.orderConfirmationTitle.tr).paddingBottom(10.w),

丰富工具库

  • 依赖管理
    • Get.put
    • Get.find
  • 路由操作
    • Get.to
    • Get.off
    • Get.offAll
  • HTTP 通讯
    • GetConnect
  • 对话框
    • Get.dialog
    • Get.snackbar
  • 响应式
    • Rx
    • Obx()
  • 多语言
  • 防抖和节流
    • Debounce
    • Throttle
  • 路由中间件
  • 服务Service
  • GetX 扩展
    • 颜色
    • 文本
    • 图标
    • 边距

上手简单,配合猫哥插件更省心

https://marketplace.visualstudio.com/items?itemName=ducafecat.getx-template

猫哥 flutter 插件

根据 x3 图片自动生成 x1 x2 图片
生成 图片 svg 常量列表 files.txt
生成规范目录 common
生成 GetBuilder + GetView 的代码
生成 StatefulWidget + GetBuilder + GetView 的代码
生成 controller、view、widgets、bindings、state、index 完整的代码
生成 路由声明定义文件

代码

https://github.com/jonataslaw/getx

小结

本文深入探讨了 Flutter GetX 3.7.2 的特点与优势,特别是它在自动依赖管理、简洁语法以及多种开发工具方面的表现。作为一个被严重低估的框架,GetX 为 Flutter 开发者提供了高效的解决方案,帮助他们快速构建功能丰富的应用程序。希望本文能够帮助更多开发者了解并应用 GetX 框架,提升开发效率。

感谢阅读本文

如果有什么建议,请在评论中让我知道。我很乐意改进。


猫哥 APP

flutter 学习路径


© 猫哥 ducafecat.com

end