https://pub.dev/packages/connectivity_plus
connectivity_plus | Flutter Package
Flutter plugin for discovering the state of the network (WiFi & mobile/cellular) connectivity on Android and iOS.
pub.dev
https://plus.fluttercommunity.dev/docs/connectivity_plus/overview/
Connectivity Plus Overview | Flutter Community Plus Plugins
Connectivity Plus Overview
plus.fluttercommunity.dev
앱이 디바이스의 네트워크 연결에 대한 정보를 얻을 수 있게 해주는 패키지이다.
디바이스가 셀룰러인지, WiFi인지, 인터넷 연결이 되어있는지 여부를 알 수 있다.
final Connectivity _connectivity = Connectivity();
ConnectivityResult connectivityResult = await _connectivity.checkConnectivity();
if (connectivityResult == ConnectivityResult.mobile) {
// I am connected to a mobile network.
} else if (connectivityResult == ConnectivityResult.wifi) {
// I am connected to a wifi network.
}
checkConnectivity() 는 3가지의 네트워크 상태값을 리턴한다.
1. Mobile : 모바일 셀룰러 네트워크에 연결되어 있음
2. WiFi : WiFi 액세스 포인트에 연결되어 있음
3. None : 전혀 연결되어 있지 않음
네트워크 변경 알림 받기
StreamSubscription을 선언한다.
StreamSubscription<ConnectivityResult> _connectivitySubscription;
return 타입이 Stream<ConnectivityResult> 인 onConnectivityChanged 메서드를 사용하여 listener를 등록한다.
※
Android 8.0 버전부터는 앱이 백그라운드 상태일 때는 네트워크 변경 알림을 전달하지 않는다.
앱이 다시 실행될 때 네트워크 연결 상태를 확인해야 한다.
앱이 포어그라운드 상태일 때만 네트워크 변경 알림이 유효하다.
// 코드 실행 시, null을 피하기 위해서 none 상태로 변수를 초기화 한다.
ConnectivityResult connectivityResult = ConnectivityResult.none;
@override
void initState() {
super.initState();
_connectivitySubscription =
_connectivity.onConnectivityChanged.listen(_updateConnectionStatus);
}
// 구독을 종료한 이후에는 cancel 해준다.
@override
dispose() {
super.dispose();
subscription.cancel();
}
// listener가 네트워크 연결 상태를 업데이트 한다.
Future<void> _updateConnectionStatus(ConnectivityResult result) async {
setState((){
_connectionResult = result;
});
}
※
안정적인 코드를 위해선 try catch문을 이용하여 네트워크 연결을 확인해야 한다.
(이 부분은 실제 코드를 써보면서 익혀야 할것 같다.)
'DART' 카테고리의 다른 글
[DART] Dart 3.0 신규 문법 (0) | 2023.06.21 |
---|---|
[DART] flutter_dotenv Package (0) | 2022.08.26 |
[DART] 기본 문법 익히기 (0) | 2022.08.21 |