You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Getx框架中Get.create()是什么及作用?与Get.put()/lazyPut()的区别

Getx 中 Get.create()、Get.put()、Get.lazyPut() 的区别

先搞懂 Get.create() 的含义

你看到的代码:

Get.create<ShoppingController>(() => ShoppingController());

文档描述的意思很直接:当你用Get.create注册控制器后,每调用一次Get.find<ShoppingController>(),就会生成一个全新的ShoppingController实例。比如在页面A调用Get.find()拿到实例A,页面B再调用Get.find()拿到的是完全独立的实例B,两者的状态、数据互不影响。

和 Get.put()、Get.lazyPut() 的核心区别

1. Get.put()

  • 注册时立即创建实例,且整个生命周期内是单例:
    Get.put<ShoppingController>(ShoppingController());
    
  • 不管调用多少次Get.find(),拿到的都是同一个实例,数据状态全局共享。
  • 适合需要全局统一状态的场景,比如购物车控制器,所有页面操作的都是同一组购物车数据。

2. Get.lazyPut()

  • 懒加载创建实例:注册时不会初始化控制器,只有第一次调用Get.find()的时候才会创建实例。
  • 同样是单例,后续调用Get.find()都返回同一个实例:
    Get.lazyPut<ShoppingController>(() => ShoppingController());
    
  • 适合控制器初始化开销大,或者不一定会用到的场景,能节省内存。

三者对比总结

方法创建时机是否单例适用场景
Get.create()每次find时创建否需要多个独立实例的场景
Get.put()注册时立即创建是全局共享状态、必须立即初始化
Get.lazyPut()首次find时创建是懒加载、非必要立即初始化的场景

内容的提问来源于stack exchange,提问作者Gwhyyy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:30:51