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

Flutter多模块项目get_it等依赖导入警告问题求助

Flutter多模块项目中depend_on_referenced_packages警告的解决方法

问题根源

Flutter的depend_on_referenced_packages lint规则有明确要求:代码里直接导入的任何包,必须在当前模块的pubspec.yaml中声明为依赖。哪怕这些包是通过shared这类共享库导出的,只要你在代码里写了import 'package:get_it/get_it.dart'这种直接导入语句,当前模块就必须自己声明对应依赖,否则就会触发警告。

解决方案

方案1:统一通过shared库导入(推荐)

如果你的设计初衷就是用shared作为依赖统一出口,把所有直接导入get_it、json_annotation的代码,替换成导入shared的导出文件:

// 替换之前的直接导入语句
import 'package:shared/shared.dart';

这样修改后,其他模块无需在自己的pubspec.yaml里添加get_it、json_annotation等依赖,只要保持依赖shared即可,lint警告会自动消失。

方案2:在使用模块中显式声明依赖

如果部分模块确实需要直接导入这些包(比如有特殊业务需求),就在对应模块的pubspec.yaml的dependencies节点下添加相关依赖:
比如features模块的pubspec.yaml需补充:

dependencies:
  # 保留原有依赖...
  get_it: ^7.7.0

repositories模块的pubspec.yaml需补充:

dependencies:
  # 保留原有依赖...
  json_annotation: ^4.9.0

注意版本号最好和shared库中的配置保持一致,避免出现版本冲突问题。

方案3:禁用该lint规则(不推荐)

如果实在不想修改导入方式或添加依赖,可以在项目根目录新建/修改analysis_options.yaml,禁用depend_on_referenced_packages规则:

linter:
  rules:
    depend_on_referenced_packages: false

但不建议这么做——这个规则的存在是为了保证依赖关系清晰,禁用后可能会埋下依赖缺失、版本不一致的隐患。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:35:07