import 'package:myApp/path/myFile.dart';
永远不要
import './myFile.dart';
这是由于dart如何解决进口问题。
您可能只有一个源文件,但是在构建过程中,存在某些重复项。
假设您正在使用“ myApp”。要导入文件,可以同时执行以下两项 *** 作:
import 'relativePath/myFile.dart'
import 'package:myApp/path2/myFile.dart'
您会认为它们指向同一文件,对吗?但不是。其中之一将指向原始来源。而另一个将指向用于构建的临时文件。
当您开始混合使用两种解决方案时,问题就来了。因为对于编译器,这两个文件是 不同的
。这意味着
IApp从中导入
package:myApp/IApp不等于从中
IApp导入相同
relativePath/myApp/IApp
在您的情况下,您在小部件树中插入了一个
IAppfrom,
pakage:path但是您的
IApp.of(context)使用已
IAppState在本地解析。它们都有不同的runtimeType。因此
constTypeMatcher<IAppState>()不会匹配。并且您的函数将返回null。
有一种非常简单的方法可以测试此行为。创建一个
test.dart仅包含文件
class Test {}
然后在您
main.dart添加以下导入:
import 'package:myApp/test.dart' as Absolute;import './test.dart' as Relative;
您最终可以通过以下方法进行测试:
new Relative.Test().runtimeType == new Absolute.Test().runtimeType
破坏者:结果是错误的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)