In my flutter app, I have a ConnectivityStatus
widget which displays the current connection status of the app to my raspberry pi. In the initState
of my widget, I subscribe to a timer to check the connection every 5 seconds and update the state accordingly, then unsubscribe upon disposal.
The issue is, when multiple screens use the ConnectivityStatus
widget, such as in a stack navigator setup, I now have two concurrent subscriptions as neither instance has disposed. This causes many redundant, unneeded requests to occur.
What I really want is to either share a single instance of the widget across multiple screens, or have one global state multiple instances can access.
How can I achieve this or what are other recommended solutions to my problem?
The most simple way of achieving this would be to use InheritedWidget to pass the ConnectivityStatus to the descending widgets. https://api.flutter.dev/flutter/widgets/InheritedWidget-class.html
You could also look into other state management solutions such as Provider https://pub.dev/packages/provider or Bloc https://pub.dev/packages/flutter_bloc