gpt4 book ai didi

dart - 尝试使用 InheritedWidget 但获取 Null

转载 作者:IT老高 更新时间:2023-10-28 12:38:18 25 4
gpt4 key购买 nike

Widget Hierarchy

我正在调用 InheritedWidgetof 函数,但是当您在上面看到我的小部件位于顶部时,我的函数返回 null那个树。调用来自被推送到导航器堆栈的页面,而不是该页面。有谁知道为什么?我的 InheritedWidget 代码如下。

class LiveKHProvider extends InheritedWidget {
final LiveKHBloc liveKHBloc = LiveKHBloc();

@override
bool updateShouldNotify(InheritedWidget oldWidget) => oldWidget != this;

static LiveKHBloc of(BuildContext context) {
var inheritFromWidgetOfExactType =
context.inheritFromWidgetOfExactType(LiveKHProvider); // to clearly see what’s returning null.
//This is where it returns null,
//so the below line is executed on a null object.
return (inheritFromWidgetOfExactType as LiveKHProvider).liveKHBloc;
}

LiveKHProvider({Key key, Widget child}) : super(key: key, child: child);
}

最佳答案

至少在我的测试中,InheritedWidget 可以被继承,即使它是 MaterialApp/WidgetsApp/CupertinoApp 或路由的父级。

对于遇到此问题的其他人,更可能的解释是您导入了具有不同大小写的 InheritedWidget。即在您生成它的地方,您可能已将其导入为 import 'MyInheritedWidget.dart',而在您尝试检索它的地方,您将其导入为 import 'myinheritedwidget.dart' .

这不会导致任一文件出错(至少在 Windows 中),但不会匹配并返回 null。

关于dart - 尝试使用 InheritedWidget 但获取 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51717476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com