[flutter] 플러터에서의 인터넷 연결 상태 확인 방법

플러터(Flutter) 앱 개발 중에는 사용자의 인터넷 연결 상태를 확인하는 것이 중요합니다. 사용자가 오프라인 상태인 경우, 앱은 적절한 조치를 취하여 사용자 경험을 향상시킬 수 있습니다. 이 글에서는 플러터에서 인터넷 연결 상태를 확인하는 방법을 알아보겠습니다.

1. connectivity 패키지 사용하기

플러터에서는 connectivity 패키지를 사용하여 인터넷 연결 상태를 확인할 수 있습니다. 이 패키지는 앱이 인터넷에 연결되어 있는지 여부를 확인하고, 연결 유형(와이파이, 셀룰러 등)을 판별할 수 있습니다.

먼저, pubspec.yaml 파일의 dependencies 섹션에 connectivity 패키지를 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  connectivity: ^2.0.2

이제 패키지를 가져올 수 있습니다.

import 'package:connectivity/connectivity.dart';

2. 인터넷 연결 상태 확인하기

인터넷 연결 상태를 확인하기 위해서는 Connectivity 클래스의 checkConnectivity 메서드를 호출합니다.

var connectivityResult = await (Connectivity().checkConnectivity());
if (connectivityResult == ConnectivityResult.none) {
  // 인터넷에 연결되어 있지 않음
} else if (connectivityResult == ConnectivityResult.mobile) {
  // 모바일 데이터로 연결됨
} else if (connectivityResult == ConnectivityResult.wifi) {
  // 와이파이로 연결됨
}

위의 코드에서는 connectivityResult 변수를 통해 연결 상태를 얻어옵니다. ConnectivityResult.none은 인터넷 연결이 없음을 나타내고, ConnectivityResult.mobile은 모바일 데이터로 연결되었음을 나타냅니다. 마지막으로, ConnectivityResult.wifi는 와이파이로 연결되었음을 나타냅니다.

3. 인터넷 연결 상태 변화 감지하기

앱에서 인터넷 연결 상태의 변화를 감지하고 싶은 경우, Connectivity 클래스의 onConnectivityChanged 스트림을 사용할 수 있습니다. 이 스트림을 등록하면, 인터넷 연결 상태가 변경될 때마다 알림을 받을 수 있습니다.

import 'package:flutter/material.dart';
import 'package:connectivity/connectivity.dart';

class ConnectivityPage extends StatefulWidget {
  @override
  _ConnectivityPageState createState() => _ConnectivityPageState();
}

class _ConnectivityPageState extends State<ConnectivityPage> {
  StreamSubscription<ConnectivityResult> subscription;

  @override
  void initState() {
    super.initState();
    subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
      if (result == ConnectivityResult.none) {
        // 인터넷에 연결되어 있지 않음
      } else if (result == ConnectivityResult.mobile) {
        // 모바일 데이터로 연결됨
      } else if (result == ConnectivityResult.wifi) {
        // 와이파이로 연결됨
      }
    });
  }

  @override
  void dispose() {
    subscription.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold();
  }
}

위의 예제 코드는 ConnectivityPage 클래스에서 인터넷 연결 상태를 감지하는 기능을 구현한 것입니다. initState 메서드에서 onConnectivityChanged 스트림을 등록하고, dispose 메서드에서 등록된 스트림을 해지하도록 하였습니다.

이제 앱에서 인터넷 연결 상태를 실시간으로 감지할 수 있습니다.

마무리

플러터에서 인터넷 연결 상태를 확인하는 방법에 대해 알아보았습니다. connectivity 패키지를 이용하여 간편하게 인터넷 연결 상태를 확인할 수 있고, 변화감지를 통해 사용자 경험을 더욱 개선할 수 있습니다. 플러터 앱 개발 중에는 항상 사용자의 인터넷 연결 상태를 고려하고 적절히 처리해야 합니다.

참조: