Yimaru-Mobile/StudioProjects/bloc_tutorial/lib/logic/cubit/internet_cubit.dart
2026-01-21 16:58:01 +03:00

46 lines
1.4 KiB
Dart

import 'dart:async';
import 'package:bloc/bloc.dart';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:meta/meta.dart';
import '../../constants/enums.dart';
part 'internet_state.dart';
class InternetCubit extends Cubit<InternetState> {
late StreamSubscription _internetStreamSubscription;
final Connectivity _connectivity = Connectivity();
InternetCubit() : super(InternetLoading()) {
_monitorInternetConnection();
}
void emitInternetConnected(ConnectionType connectionType) =>
emit(InternetConnected(connectionType: connectionType));
void emitInternetDisconnected() => emit(InternetDisconnected());
void _monitorInternetConnection() {
_internetStreamSubscription =
_connectivity.onConnectivityChanged.listen((connectivityResult) {
if (connectivityResult.last == ConnectivityResult.wifi) {
emitInternetConnected(ConnectionType.wifi);
} else if (connectivityResult.last == ConnectivityResult.mobile) {
emitInternetConnected(ConnectionType.mobile);
} else if (connectivityResult.last == ConnectivityResult.vpn) {
emitInternetConnected(ConnectionType.vpn);
} else if (connectivityResult.last == ConnectivityResult.none) {
emitInternetDisconnected();
}
});
}
@override
Future<void> close() {
_internetStreamSubscription.cancel();
return super.close();
}
}