Я создаю приложение Flutter для подключения к динамику IOT (с Wi-Fi). Мне нужно подключиться к нему и загрузить аудиофайлы с помощью API GET/POST. Если я подключу свой телефон к Wi-Fi динамика, используя опцию Wi-Fi, уже присутствующую в телефоне Android, я смогу загрузить файл через запрос POST. Если я подключусь к динамику Wi-Fi через приложение Flutter с использованием пакета wiflutter, я не смогу выполнить запрос POST.
package:wiflutter/wiflutter.dart'; -- Он подключается к Wi-Fi, но не позволяет мне выполнять запросы GET/POST.
Я также пробовал много других пакетов. Они давно не обновлялись.
Ниже приведены пакеты, которые я пробовал:
'package:wifi_scan/wifi_scan.dart'; -- сканирует только Wi-Fi
package:wifi/wifi.dart'; -- похоже, это устаревший пакет
'package:wifi_connector/wifi_connector.dart'; -- Я получаю сообщение об ошибке, что пакет использует устаревшую версию плагина Kotlin. Кажется, это невозможно обойти.
Код для подключения к Wi-Fi:
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:nspeak/RecordingPage.dart';
import 'package:wifi_scan/wifi_scan.dart';
import 'package:wiflutter/wiflutter.dart';
import 'package:wiflutter/enums/enterprise_certificate_enum.dart';
// import 'package:wifi_iot/wifi_iot.dart'; -- doesnt support Null safety, so cant use it.
// import 'package:wifi_connector/wifi_connector.dart'; --it uses older Kotlin plugin version. So cant use it.
// import 'package:wifi_configuration/wifi_configuration.dart'; -- doesnt support Null safety, so cant use it.
// import 'package:wifi/wifi.dart'; -- doesnt support Null safety, so cant use it.
scanNspeakwifi() async{
resultcanstarscan = await WiFiScan.instance.canStartScan();
// print("passed canstartscan : $resultcanstarscan");
if(resultcanstarscan == CanStartScan.yes){
scansuccess = await WiFiScan.instance.startScan();
// print("scan success: $scansuccess");
if (mounted){
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
padding: EdgeInsets.only(bottom: 25,),
duration: Durations.extralong4,
backgroundColor: Colors.yellow,
content: Center(child:Text('Scanning in progress', style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold, color: Colors.black),),
)),
);
}
}
else {
if(mounted){
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
padding: EdgeInsets.only(bottom: 25,left: 30, right: 30),
duration: Durations.extralong4,
backgroundColor: Colors.red,
content: Center( child: Text('Cannot start scan. Check if all necessary permissions are given!', style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),),
),
)
);
}
}
cangetresults = await WiFiScan.instance.canGetScannedResults();
// print("Passed cangetresults $cangetresults");
if(cangetresults == CanGetScannedResults.yes ){
scanresults = await WiFiScan.instance.getScannedResults();
if(mounted){
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
padding: EdgeInsets.only(bottom: 25, left: 20, right: 20),
duration: Durations.extralong4,
backgroundColor: Colors.green,
content: Center(child: Text('Scan completed! Click on "Get Results" to view nearby Nspeak device', style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),)),
),
);
}
}
else {
if(mounted){
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
padding: EdgeInsets.only(bottom: 25,left: 20, right: 20),
duration: Durations.extralong4,
backgroundColor: Colors.red,
content: Center(child: Text('No scan result available. Check if all necessary permissions are given!', style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),)),
),
);
}
}
}
getNspeakwifi() async {
var resultsavail = await WiFiScan.instance.onScannedResultsAvailable;
var checkresult = await resultsavail.isEmpty;
if (!checkresult){
setState(() {
wifiNetworks = scanresults;
_shownetworks = true;
});
}
else{
if(mounted){
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
padding: EdgeInsets.only(bottom: 25, left: 20, right: 20),
duration: Durations.extralong4,
backgroundColor: Colors.red,
content: Center(child: Text('No Nspeak devices nearby! ', style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),)),
),
);
}
}
}
Widget displayNspeak(){
var value;
nspeakdevices = []; /*Initialzied the variable here again because everytime "Get results" is clicked, it should return a new list. It should not go on adding the Wifi ACcess points to the same list*/
for (int i=0; i
Подробнее здесь: https://stackoverflow.com/questions/783 ... -flutter-a