import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:get/get.dart'; import 'package:flutter/material.dart'; import 'package:onufitness/widgets/network/no_network_widget.dart'; class NetworkController extends GetxController { final Connectivity _connectivity = Connectivity(); RxBool isConnected = true.obs; @override void onInit() { super.onInit(); _initConnectivity(); _connectivity.onConnectivityChanged.listen(_updateConnectionStatus); } void _initConnectivity() async { final result = await _connectivity.checkConnectivity(); _handleInitialConnection(result); } void _handleInitialConnection(ConnectivityResult result) { bool hasConnection = result != ConnectivityResult.none; isConnected.value = hasConnection; if (!hasConnection) { WidgetsBinding.instance.addPostFrameCallback((_) { if (!Get.isDialogOpen!) { Get.dialog(const NoInternetDialog(), barrierDismissible: false); } }); } } void _updateConnectionStatus(ConnectivityResult result) { bool hasConnection = result != ConnectivityResult.none; if (hasConnection != isConnected.value) { isConnected.value = hasConnection; if (!hasConnection) { if (!Get.isDialogOpen!) { Get.dialog(const NoInternetDialog(), barrierDismissible: false); } } else { if (Get.isDialogOpen!) { Get.back(); } } } } }