diff --git a/lib/main.dart b/lib/main.dart index 05736a8f..7eb42143 100755 --- a/lib/main.dart +++ b/lib/main.dart @@ -65,7 +65,9 @@ class OpenJMUAppState extends State with WidgetsBindingObserver { WidgetsBinding.instance.addObserver(this); tryRecoverLoginInfo(); - Connectivity().checkConnectivity().then(checkIfNoConnectivity); + SchedulerBinding.instance.addPostFrameCallback((_) { + Connectivity().checkConnectivity().then(checkIfNoConnectivity); + }); connectivitySubscription = Connectivity().onConnectivityChanged.listen( (ConnectivityResult result) { checkIfNoConnectivity(result); @@ -170,29 +172,22 @@ class OpenJMUAppState extends State with WidgetsBindingObserver { } void checkIfNoConnectivity(ConnectivityResult result) { - if (result == ConnectivityResult.none) { - if (mounted) { - connectivityToastFuture = showToastWidget( - noConnectivityWidget, - duration: 999.weeks, - handleTouch: true, - ); - } else { - SchedulerBinding.instance.addPostFrameCallback((_) { - connectivityToastFuture = showToastWidget( - noConnectivityWidget, - duration: 999.weeks, - handleTouch: true, - ); - }); - } + if (result == ConnectivityResult.none && connectivityToastFuture == null) { + connectivityToastFuture ??= showNoConnectivityDialog; } else { - if (Instances.connectivityResult == ConnectivityResult.none) { - connectivityToastFuture?.dismiss(showAnim: true); + connectivityToastFuture?.dismiss(showAnim: true); + if (connectivityToastFuture != null) { + connectivityToastFuture = null; } } } + ToastFuture get showNoConnectivityDialog => showToastWidget( + noConnectivityWidget, + duration: 999.weeks, + handleTouch: true, + ); + Widget get noConnectivityWidget => Material( color: Colors.black26, child: BackdropFilter(