Flutter 全局侦听器小部件

Flutter 全局侦听器小部件,flutter,Flutter,我在颤振应用程序中有一个MyListener小部件,如下所示 类MyListener扩展StatefulWidget{ 最终河流; 常数MyListener({ @需要这个.stream, }):assert(流!=null); @凌驾 _MyListenerState createState()=>\u MyListenerState(); } 类_MyListenerState扩展状态{ 流订阅事件订阅; @凌驾 void initState(){ super.initState(); ev

我在颤振应用程序中有一个
MyListener
小部件,如下所示

类MyListener扩展StatefulWidget{
最终河流;
常数MyListener({
@需要这个.stream,
}):assert(流!=null);
@凌驾
_MyListenerState createState()=>\u MyListenerState();
}
类_MyListenerState扩展状态{
流订阅事件订阅;
@凌驾
void initState(){
super.initState();
eventSubscription=stream.listen(onMyEvent);
}
@凌驾
无效处置(){
eventSubscription.cancel();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回容器();
}
无效onMyEvent(MyEvent事件){
//做点什么
}
}
我想将
MyListener
widget作为
MaterialApp
的孙子,在小部件树中放置一次
MyListener,我的
MaterialApp
有许多
路由
,我不想在所有
路由中添加
MyListener
我只想在我的小部件树中有一个
MyListener
,来监听我的流,并做一些事情,例如显示snackbar、路由到某处、关闭应用程序等等


如何在小部件树中全局添加
MyListener
作为
MaterialApp
的孙子?

小部件意味着绘图布局。您需要的是一个全球服务,可以在应用程序中的任何地方访问。将你的
和它的侦听器放在不同的dart文件类中,并从你的应用程序入口点调用它
StatefulWidget
与此无关

检查我问了其他问题,我想在widget树中全局放置一个widget,这意味着该widget存在于整个应用程序生命周期中,如MaterialApp widget或debug ribbon,但一旦Ethere是
MaterialApp
中的
builder
属性,但老实说,您希望如何“访问”运行时的小部件?这就是为什么我指向
InheritedWidget
如果在
builder
中返回
MyWidget(child:child)
,发生了什么?
MyWidget
是否在多个路由中重新创建?或者它只创建了一次?您能澄清一下吗,它是创建了一次吗?我需要访问
上下文
,例如,在某些情况下,我需要打开一张底页解决此问题的最佳做法是什么?您必须收听流并执行需要
上下文
的操作。打开底部工作表、显示对话框、snackbar、路由…如果您需要全局上下文,即使在您的服务中也可以访问,请使用此包。只需执行
Get.context
即可访问您的上下文。Widget的设计目的是在应用程序中不运行全局任务。以适当和有效的方式规划全局任务需要使用服务。除非您的应用程序使用参数为需要的服务的每个功能提供当前上下文,否则如果您想从侦听器访问上下文,您可能需要第三方插件的帮助。如果你自己动手做,你将通过编码来重新发明轮子对不起,我的英语水平不高,我不是一个以英语为母语的人