plugin_wifi_connect
一個低依賴的 Flutter 插件,用於透過提供的 SSID 或 SSID 前綴簡單連接到 Wi-Fi 設備
新版本將由我更新
{"sdk":"flutter"}{"sdk":"flutter"}>=1.0.0 <3.0.0以下為英文專案原文快照,最新內容請造訪 GitHub。
Flutter connector for Wi‑Fi devices
Low‑dependency plugin to simplify automatic connection to devices via SSID or SSID prefix. Compatible with Android 10+ (API 29+) and iOS 11+.
Conector Flutter para dispositivos Wi‑Fi
Plugin com baixa dependência para facilitar a conexão automática a dispositivos via SSID ou prefixo de SSID. Compatível com Android 10+ (API 29+) e iOS 11+.
Instalar via pub.dev (recomendado):
dependencies:
plugin_wifi_connect: ^2.0.2
Ou instalar direto do repositório (desenvolvimento):
dependencies:
plugin_wifi_connect:
git:
url: https://github.com/chenrilima/plugin_wifi_connect.git
ref: main
Depois:
flutter pub get
✅ Connects to an exact SSID (iOS 11+, Android).
🔍 Connects to SSIDs that match a prefix (iOS 13+, Android).
📡 Compatible with IoT devices that use unique SSIDs.
⚙️ Efficient strategy on Android: scans and connects by prefix (requires runtime permission ACCESS_FINE_LOCATION).
✅ Conecta-se a um SSID exato (iOS 11+, Android).
🔍 Conecta-se a SSIDs que combinam um prefixo (iOS 13+, Android).
📡 Compatível com dispositivos IoT que usam SSIDs únicos.
⚙️ Estratégia eficiente no Android: escaneia e conecta por prefixo (requer permissão em tempo de execução ACCESS_FINE_LOCATION).
import 'package:flutter/material.dart';
import 'package:plugin_wifi_connect/plugin_wifi_connect.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) => MaterialApp(home: HomePage());
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String _status = 'idle';
Future<void> _connectDirect() async {
try {
final ok = await PluginWifiConnect.connectToSsid(
ssid: 'MeuDispositivoWiFi',
password: 'senha123',
);
setState(() => _status = ok ? 'Conectado' : 'Falha ao conectar');
} catch (e) {
setState(() => _status = 'Erro: $e');
}
}
Future<void> _connectPrefix() async {
final ok = await PluginWifiConnect.connectToSsidPrefix(
prefix: 'IoTDevice_',
password: 'senhaPadrao',
);
setState(() => _status = ok ? 'Conectado por prefixo' : 'Não encontrado');
}
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(title: Text('plugin_wifi_connect example')),
body: Center(
child: Column(mainAxisSize: MainAxisSize.min, children: [
ElevatedButton(onPressed: _connectDirect, child: Text('Conectar SSID')),
ElevatedButton(onPressed: _connectPrefix, child: Text('Conectar por Prefixo')),
SizedBox(height: 12),
Text(_status),
]),
),
);
}
Android (adicionar no AndroidManifest.xml):
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
Notas iOS:
NEHotspotConfiguration (iOS 11+). Em geral não são necessárias entitlements especiais, mas documente limitações (ex.: redes com captive portal ou redes gerenciadas por MDM podem não funcionar).Se quiser, eu posso também abrir um PR com este README ou commitar direto no branch main.