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

关于Dart中LoadingScreen单例实现代码的技术疑问

Dart LoadingScreen 单例代码疑问解答

1. 为什么能调用_sharedInstance()却找不到这个函数?

LoadingScreen._sharedInstance()不是普通函数,它是类的私有命名构造函数。在Dart中,以下划线开头的命名构造函数属于类内部私有成员,外部无法直接访问,所以你看不到它作为普通函数的定义,但它本质是构造函数的一种,用来创建类的实例。

2. 为什么用LoadingScreen._sharedInstance()定义_shared?

这是Dart实现单例模式的标准写法:

  • 用私有构造函数_sharedInstance()限制外部随意创建实例
  • 静态变量_shared保存通过私有构造创建的唯一实例,确保整个应用生命周期内只会有一个LoadingScreen对象,避免重复创建导致的状态混乱(比如加载弹窗重复弹出)

3. 这里为什么要用factory关键字?

factory是Dart的工厂构造函数,核心特性是可以返回已存在的对象,而非每次都新建实例。
如果不用factory,改用普通构造函数,每次调用LoadingScreen.instance()都会强制创建新对象,就破坏了单例的唯一性。而用factory的话,调用LoadingScreen.instance()时会直接返回预先初始化好的_shared实例,正好满足单例模式的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:35:34