Dart同目录下导入其他文件已定义变量提示Getter not found报错如何解决
你使用的import 'main.dart';和import './main.dart';两种同目录相对导入写法都是合法的,路径本身没有问题,报错是以下几种原因导致的,按优先级排查即可:
问题原因及解决方案
- 场景1:变量
c是私有变量
Dart中以下划线_开头的标识符属于库私有成员,仅能在定义它的.dart文件内部访问,即便导入文件也无法跨文件调用。
修复方案:将变量名开头的下划线去掉,改为非私有顶级变量。
main.dart代码示例:// 正确:非私有顶级变量,可跨文件访问 int c = 10; // 错误:私有变量,仅当前文件可用 // int _c = 10; void main() { // 业务逻辑 }
- 场景2:变量
c定义在函数内部
如果变量c是写在main()函数或者其他函数内部的局部变量,作用域仅局限于函数内部,外部文件完全无法访问。
修复方案:将变量
c的定义移到函数外部,作为顶级变量放在文件顶层位置,写法参考场景1的正确示例。
- 场景3:导入语句带了过滤规则
如果import语句后面跟着show、hide关键字,可能把c排除在了导入范围外。
修复方案:检查导入语句,确保没有把
c隐藏,也可以主动用show指定导入c:// 主动指定导入main.dart中的c变量 import 'main.dart' show c;
- 场景4:存在导入命名冲突
如果ex.dart里同时导入了多个包含同名c变量的文件,Dart无法识别你调用的是哪个来源的c,也可能抛出类似错误。
修复方案:给导入的main.dart加别名,调用时用别名指定来源:
import 'main.dart' as main_lib; void test() { print(main_lib.c); }
排查完成后清理项目缓存重新运行即可解决问题。
内容的提问来源于stack exchange,提问作者Karim Refaay
相关产品推荐
相关产品推荐

