如何在不使用state的情况下实现Flutter的WidgetsBindingObserver版本?



我正在构建一个颤振应用程序,当应用程序进入后台时,我需要在提供程序中调用一个方法。

我可以通过使用 WidgetsBindingObserver 创建一个有状态的 Widget 来轻松做到这一点(就像这里的例子一样(。

有没有办法在不需要有状态小部件的情况下做到这一点?提供程序是一个伟大的体系结构,状态是一个反模式。

可能,您可以尝试创建一个不是 widget 的类并扩展 WidgetsBindingObserver。

也许是这样的东西

class MyListener extends  WidgetsBindingObserver {
MyListener({this.providerInstance}){
WidgetsBinding.instance.addObserver(this);
};
MyProvider providerInstance;
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
providerInstance.doSomethingWithState(state)
}
}

然后在 main(( 或 yourApp(( 中实现侦听器说,无论您的提供程序设置在哪里。

问题是,在应用程序的根目录下放置一个有状态的小部件确实没有任何问题,如示例中所示。老实说,我认为您的反模式论点没有任何相关性。在颤振中,它的常见做法是拥有有状态而不是有状态的小部件。

通过没有状态完整的小部件,您只需要将状态保留在其他地方,即您配置提供程序的位置。

相关内容

最新更新