🛰️
flutterのwifiパッケージ「connectivity」で上手くいかなかったら
flutterのwifi系のパッケージで1日詰まった為、誰かのためにメモ
解決できる問題
flutterでwifiの接続状況を取得したい(wifi接続の有無,wifiの強度,通信方法の取得)
flutterで接続されているwifiの詳細情報を取得したい(wifi名,IP,BSSID取得)
本題
flutterのwifi系の情報を取得するパッケージは何個かあるが公式の物では「connectivity」がある。
Exampleなどを見ると「connectivity」で上の解決したいものを全て解決するように見える。
だが、よくよく調べてみると
あるタイミングでwifiに関するパッケージを二つに分けられ、「wifi_info_flutter」という別のパッケージがリリースされており、「connectivity」の機能が少し移植され
上記の問題を「connectivity」だけでは解決できなくなった。
wifiの接続状況を取得したい(wifi接続の有無,wifiの強度,通信方法の取得)
「connectivity」
接続されているwifiの詳細情報を取得したい(wifi名,IP,BSSID取得)
「wifi_info_flutter」
上記の通り移植されているがパッケージのREADMEなどが変更されておらず誤った方法で行うと
永遠に取得することができない。。
connectivity
wifiに繋がっているかどうかが返ってくる
import 'package:connectivity/connectivity.dart';
String wificonnect;
final Connectivity _connectivity = Connectivity();
wificonnect = await _connectivity.checkConnectivity();
wifi_info_flutter
wifiの名前が返ってくる
import 'package:wifi_info_flutter/wifi_info_flutter.dart';
String wifiName;
final WifiInfo _wifiInfo = WifiInfo();
wifiName = await _wifiInfo.getWifiName();
備考
wifi取得には位置情報権限も必要なので、権限の解放も忘れずに!!
権限の変更は「permission_handler」がおすすめです!!
main.dart
import 'package:permission_handler/permission_handler.dart';
Map<Permission, PermissionStatus> statuses = await [Permission.location].request();
Info.plist
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
AndroidManifest.xml
import 'package:permission_handler/permission_handler.dart';
Map<Permission, PermissionStatus> statuses = await [Permission.location].request();
Discussion