2026-01-13 11:36:24 +05:30

52 lines
1.4 KiB
Dart

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();
}
}
}
}
}