栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Flutter:从子级检索顶级状态将返回null

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flutter:从子级检索顶级状态将返回null

TDLR :仅使用以下文件导入文件

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

在您的情况下,您在小部件树中插入了一个

IApp
from,
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

破坏者:结果是错误的



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410143.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号