GETX总结

40 阅读1分钟

1、Obx\GetBuilder\GetX的区别和选择

Obx组件最方便,而且不限制控制器,效率也不错,唯一的代价是要使用响应式变量。GetBuilder可以使用普通变量,但需要手动update更新,指定id的方式灵活性高,但如果涉及到多个控制器会比较麻烦,要么做一个组合控制器,要么在不同控制器数据变化时主动update相关id的GetBuilder组件。代码量会较多,比如在控制器中需要定义id的枚举,在控制器数据修改时调用相关id的update。

GetX组件是一个缝合怪,即可以使用响应式变量也可以使用普通变量,既可以自动更新也可以手动更新,使用方式神似GetBuilder。我觉得在实践中,应当在Obx和GetBuilder组件中选择一个为主,然后GetX为在需要的时候作为补充。

2、控制器必须先注册再使用,最佳实践是,页面控制器在路由配置中的GetPage中一并注册,全局控制器在 GetMaterialApp 的 initialBinding 里注册。

3、对于控制器的使用,最佳实践是,页面继承GetView,这样使用页面控制器时可以直接使用 controller,而全局控制器可以通过单例模式:static UserController get instance => Get.find();  这样在任何地方使用时只需要 UserController.instance 即可。

4、GetxController 和 GetxService 和 看起来很像,前者用作跟UI状态数据相关的控制器,后者用于与UI状态无关的全局单例。