Flutter アプリを開発していると、この端末は今Wi-Fiに繋がっているのか、モバイルデータ通信中なのか、といったネットワークの種類を判定したい場面があると思います。
この記事では、Flutter で connectivity_plus パッケージを使ったネットワーク回線情報を取得する方法について紹介します!
事前準備
まずは、connectivity_plus パッケージのインストールを行いましょう。
https://pub.dev/packages/connectivity_plus
パッケージのインストール方法の詳細は、以下の記事で紹介していますのでご参照ください。
現在のネットワーク種別を取得
現在のネットワーク種別を取得するには、以下のようにします。
import 'package:connectivity_plus/connectivity_plus.dart';
Future<void> checkNetworkStatus() async {
final results = await Connectivity().checkConnectivity();
print("現在の接続状態: $results");
}
Wi-Fi に接続していると、以下のように出力されます。
現在の接続状態: [ConnectivityResult.wifi]
ネットワーク接続の変更をリアルタイムで監視する
ネットワーク接続の変更をリアルタイムで監視するには、以下のようにします。
startListening で監視を開始、stopListening で監視を停止します。
StreamSubscription<List<ConnectivityResult>>? subscription;
void startListening() {
subscription = Connectivity().onConnectivityChanged.listen((List<ConnectivityResult> results) {
print("接続状態が変更されました: $results");
});
}
void stopListening() {
subscription?.cancel();
}
モバイル通信 OFF の状態で Wi-Fi を ON → Wi-Fi を OFF → モバイル通信を ON にしたときの出力が以下のようになります。
接続状態が変更されました: [ConnectivityResult.wifi]
接続状態が変更されました: [ConnectivityResult.none]
接続状態が変更されました: [ConnectivityResult.mobile]
まとめ
今回は、Flutter で connectivity_plus パッケージ を使ったネットワーク情報の取得方法について紹介しました!
以上で、【Flutter】ネットワーク情報を取得する方法 は終わりです。