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

Flutter/Dart中get_it注册Singleton失败但Factory正常运行问题求助

错误根因

你混淆了get_it不同注册方法的入参要求:

  • registerFactory的入参要求是返回实例的构造函数(类型为T Function()),你传入的() => UiUtils()符合入参类型,因此运行正常
  • registerSingleton的入参要求是已经完成实例化的T类型对象,你仍然传入了构造函数,相当于把函数本身当成单例注册,类型不匹配因此抛出类型转换异常。

解决方案

根据你的需求可以二选一:

  1. 立即初始化单例:注册时直接传入实例化完成的UiUtils对象
dependencyLocator.registerSingleton(UiUtils());

该方式会在执行注册代码时立刻创建UiUtils实例,适合初始化逻辑简单的类。

  1. 懒加载单例:首次调用获取实例时才执行初始化
    如果不需要启动时就初始化,使用专门接收构造函数的懒加载单例注册方法即可:
dependencyLocator.registerLazySingleton(() => UiUtils());

该方式不会占用启动阶段的性能,是单例注册的常用方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:36:03