我在 Flutter 应用程序中有一个 MyListener
小部件,如下所示
class MyListener extends StatefulWidget {
final Stream<ApiEvent> stream;
const MyListener({
@required this.stream,
}) : assert(stream != null);
@override
_MyListenerState createState() => _MyListenerState();
}
class _MyListenerState extends State<MyListener> {
StreamSubscription<MyEvent> eventSubscription;
@override
void initState() {
super.initState();
eventSubscription = stream.listen(onMyEvent);
}
@override
void dispose() {
eventSubscription.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Container();
}
void onMyEvent(MyEvent event) {
// Do something
}
}
我想将 MyListener
小部件 一次 作为 MaterialApp
的孙子放入小部件树中,我的 MaterialApp
有很多 routes
和我不想在所有 MyListener
中添加 routes
我只想在我的小部件树中有一个 MyListener
来收听我的流并做一些事情,例如显示小吃店、到某个地方的路线、关闭应用程序,...
如何在小部件树中全局添加 MyListener
作为 MaterialApp
的孙子?
答案 0 :(得分:1)
Widget 表示绘图布局。您需要的是可在您的应用程序中随处访问的全球服务。将您的 stream
及其侦听器放在不同的 dart 文件|类中,并从您的应用入口点调用它。 StatefulWidget
与此无关