[flutter] 플러터 프로바이더를 이용한 네트워크 연결 상태 확인

플러터 앱을 개발할 때 네트워크 연결 상태를 확인하고 이에 따라 사용자 경험을 개선하는 것은 매우 중요합니다. 이번 포스트에서는 플러터의 provider 패키지를 이용하여 네트워크 연결 상태를 확인하고 이를 활용하는 방법에 대해 알아보겠습니다.

1. 네트워크 연결 상태 확인하기

우선, Connectivity 패키지를 사용하여 휴대폰의 네트워크 연결 상태를 확인할 수 있습니다. 이를 위해 pubspec.yaml 파일에 connectivity 패키지를 추가합니다.

dependencies:
  connectivity: ^3.0.6

그리고 네트워크 연결 상태를 확인하는 NetworkInfo 클래스를 구현합니다.

import 'package:connectivity/connectivity.dart';

class NetworkInfo {
  Stream<ConnectivityResult> get onConnectivityChanged {
    return Connectivity().onConnectivityChanged;
  }

  Future<ConnectivityResult> get connectivityResult async {
    return await Connectivity().checkConnectivity();
  }
}

2. 네트워크 연결 상태를 프로바이더로 제공하기

provider 패키지를 사용하여 NetworkInfo 클래스를 프로바이더로 제공합니다.

import 'package:flutter/material.dart';

class ConnectivityProvider extends StatefulWidget {
  final Widget child;
  final NetworkInfo networkInfo;

  const ConnectivityProvider({
    Key key,
    @required this.child,
    @required this.networkInfo,
  }) : super(key: key);

  static ConnectivityProvider of(BuildContext context) {
    return context.dependOnInheritedWidgetOfExactType<ConnectivityProvider>();
  }

  @override
  _ConnectivityProviderState createState() => _ConnectivityProviderState();
}

class _ConnectivityProviderState extends State<ConnectivityProvider> {
  @override
  Widget build(BuildContext context) {
    return StreamProvider<ConnectivityResult>.value(
      value: widget.networkInfo.onConnectivityChanged,
      initialData: ConnectivityResult.mobile,
      child: widget.child,
    );
  }
}

3. 네트워크 연결 상태 활용하기

마지막으로, 네트워크 연결 상태를 활용하여 UI를 조작하거나 사용자에게 알림을 제공할 수 있습니다.

ConnectivityResult connectivityResult = Provider.of<ConnectivityResult>(context);
if (connectivityResult == ConnectivityResult.none) {
  // 네트워크 끊김 상태 처리
} else if (connectivityResult == ConnectivityResult.wifi) {
  // 와이파이 연결 상태 처리
} else if (connectivityResult == ConnectivityResult.mobile) {
  // 모바일 데이터 연결 상태 처리
}

위와 같이, provider 패키지를 이용하여 네트워크 연결 상태를 확인하고 이를 활용할 수 있습니다. 이를 통해 앱의 사용자 경험을 개선하고 네트워크에 따른 다양한 처리를 할 수 있습니다.

이상으로, 플러터 프로바이더를 이용한 네트워크 연결 상태 확인에 대해 알아보았습니다. 감사합니다.

참고 자료