【发布时间】:2018-08-07 01:05:39
【问题描述】:
我正在调用InheritedWidget 的of 函数,但是当您在上面看到我的小部件位于树的顶部时,我的函数返回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);
}
【问题讨论】:
-
您如何使用
context?它实际上是继承小部件下方的上下文,还是根上下文? -
构建函数中调用小部件的上下文。您是在询问在继承小部件内还是在调用小部件内使用上下文?
-
我刚刚调试它,发现它确实通过我试图抓取的对象的构造函数运行,这意味着它被实例化了,但由于某种原因,我无法访问它
-
以上
InheritedWidget代码位于哪个文件中,@ThinkDigital?它在您的main.dart文件中吗? -
不,它本身在一个单独的类文件中。