С помощью этого Плагин подключения я могу получить статус подключения, то есть мобильную сеть, Wi-Fi или ничего, используя следующий код:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:connectivity/connectivity.dart';
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String _connectionStatus = 'Unknown';
final Connectivity _connectivity = new Connectivity();
StreamSubscription<ConnectivityResult> _connectivitySubscription;
@override
void initState() {
super.initState();
initConnectivity();
_connectivitySubscription =
_connectivity.onConnectivityChanged.listen((ConnectivityResult result) {
setState(() => _connectionStatus = result.toString());
});
}
@override
void dispose() {
_connectivitySubscription.cancel();
super.dispose();
}
Future<Null> initConnectivity() async {
String connectionStatus;
try {
connectionStatus = (await _connectivity.checkConnectivity()).toString();
} on PlatformException catch (e) {
print(e.toString());
connectionStatus = 'Failed to get connectivity.';
}
if (!mounted) {
return;
}
setState(() {
_connectionStatus = connectionStatus;
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: const Text('Plugin example app'),
),
body: new Center(
child: new Text('Connection Status: $_connectionStatus\n')),
);
}
}
Теперь я хочу получить имя Wi-Fi, когда телефон подключен к Wi-Fi. Подробное описание: предположим, что пользователь подключил свой телефон к Wi-Fi с именем «Домашний Wi-Fi», из кода, который я написал, я могу получить, только если телефон подключен к Wi-Fi или нет, я также хочу получить имя Wi-Fi, если телефон подключен к Wi-Fi, т.е. «Домашний Wi-Fi».





Он просто вызывает getWifiName (), доступный в плагине wifi_info_flutter. Этот метод раньше был доступен в плагине возможность подключения, но к концу 2020 года он был перемещен в этот новый плагин.
В iOS для использования этого решения требуются шаги описано в этом ответе.
Большое спасибо. Работает нормально. На данный момент я проверял только устройство Android. Надеюсь, это отлично работает и на iOS.
Я также хотел бы знать, как я могу добавить URL-адрес git напрямую, как упомянул Рэндал.
Ах, вот как добавить прямо из git, как упоминал @RandalSchwartz. Я видел это однажды, но совершенно забыл. Вам придется использовать git: url: [email protected]:flutter/plugins.git и path: packages/connectivity.
Итак, у меня это работает в Android, но в iOS я получаю исключение PlatformException(UNAVAILABLE, wifi name unavailable, null). Проблема с разрешением?
@Rob C, да, я думаю, это заслуживает нового вопроса! :)
Готово, спасибо за предложение. Для справки: stackoverflow.com/questions/55716751/…
Я всегда получаю <unknown ssid>, когда звоню в getWifiName.
@ Дхавал Кансара, это iOS? Вы проверяли stackoverflow.com/a/55732656/796963?
@Feu Да, я уже добавил информацию о доступе к Wi-Fi для своего проекта.
BSSID может быть нулевым, если в данный момент нет подключенной сети. «02: 00: 00: 00: 00: 00», если у вызывающего абонента недостаточно прав для доступа к BSSID. нашел это на сайте разработчика Android, но не знаю, как добавить разрешения
@Feu Я также использую плагин подключения для получения SSID Wi-Fi для IOS с помощью метода connectivity.getWifiName (), но он возвращает значение null, но я могу получить IP-адрес с помощью метода getWifiIP (). В чем может быть проблема?
@Feu это моя попытка stackoverflow.com/questions/63857789/…
Вы также можете использовать URL-адрес GIT непосредственно в pubspec.yaml.