Flutter GetX 4.7.2 发布:被严重低估的强大框架
视频
https://www.bilibili.com/video/BV1oHPaeXErV/
前言
先说结论:感谢 GetX 让我节省了很多代码时间,这是一款被严重低估的 Flutter 组件,被认为设计的过于简单、没有深度、无人维护啥啥的。
很多开发者在讨论 GetX 是否已经放弃维护,但实际上并非如此。GetX 目前正集中精力开发 5.0 版本,同时也在维护 4.x 版本,最新更新已达到 4.7.2。社区内一些人常常拿其他状态管理库来与 GetX 对比,然而作为一个使用过 Bloc、Provider 和 Riverpod 的开发者,我认为 GetX 完全不逊色于它们,而且使用起来非常简单。
值得强调的是,GetX 本身是一个工具库,涵盖了状态管理、依赖注入、导航、扩展、HTTP 通信、多语言、对话框和防抖等多种功能。这些特性使得 GetX 在开发中非常高效和便捷。
参考
- https://pub.dev/packages/get
- https://github.com/jonataslaw/getx
- https://github.com/jonataslaw/getx/graphs/contributors
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
根据 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 学习路径
- Flutter 优秀插件推荐
- Flutter 基础篇1 - Dart 语言学习
- Flutter 基础篇2 - 快速上手
- Flutter 实战1 - Getx Woo 电商APP
- Flutter 实战2 - 上架指南 Apple Store、Google Play
- Flutter 基础篇3 - 仿微信朋友圈
- Flutter 实战3 - 腾讯即时通讯 第一篇
- Flutter 实战4 - 腾讯即时通讯 第二篇
© 猫哥 ducafecat.com
end