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

Flutter中三种类实例化方式与Get.put的使用区别是什么?

三种Dart类实例声明方式的区别

  • 第一种:Instance obj;
    仅声明了一个类型为Instance的引用变量,没有绑定任何实际的类实例。在Dart空安全规则下,这种写法编译会直接报错,必须加late关键字延迟初始化,或者声明为可空类型Instance? obj才能通过编译。此时变量没有实际指向的对象,直接调用其属性或方法会抛出运行时空异常,且该变量仅在当前声明的作用域内有效,出作用域后会被自动回收。

  • 第二种:Instance obj = Instance()
    声明变量的同时,在当前运行环境中创建了一个全新的Instance类实例,赋值给obj变量。该实例仅在持有它的作用域/类/组件内可访问,不同位置调用Instance()生成的都是完全独立的实例,数据互不关联,实例的生命周期和持有它的组件绑定,组件销毁时实例会被垃圾回收,无法直接实现跨页面的数据共享。

  • 第三种:Instance obj = Get.put( Instance() )
    创建Instance实例的同时,将该实例提交到GetX内置的全局依赖管理容器中托管,再返回该实例赋值给obj。该实例默认是全局单例,只要没有主动调用Get.delete<Instance>()手动销毁,哪怕当前持有它的页面被销毁,实例仍然会保存在GetX的容器中,项目任意位置都可以通过Get.find<Instance>()获取到同一个实例,天然支持跨页面的数据互通,无需额外做参数传递或全局变量封装。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:09:04