본문 바로가기

DART

[DART] connectivity_plus Package

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