autoconnect on fly mode (does not work yet)
This commit is contained in:
@@ -6,14 +6,19 @@ sealed class MlrsNetworkEvent {
|
||||
const MlrsNetworkEvent();
|
||||
}
|
||||
|
||||
/// Das Netz ist verfuegbar (Nutzer hat den Systemdialog bestaetigt).
|
||||
/// Das Netz ist verfuegbar (Nutzer hat den Systemdialog bestaetigt, oder
|
||||
/// Android hat eine zuvor bewilligte exakte SSID still erneut verbunden).
|
||||
/// [gatewayAddress] ist die Gateway-Adresse des Netzes, falls ermittelbar -
|
||||
/// dient als Vorbelegung der Zieladresse, bevor eine Gegenstelle aus dem
|
||||
/// Verkehr gelernt wurde (Doku Abschnitt 3).
|
||||
/// Verkehr gelernt wurde (Doku Abschnitt 3). [ssid] ist die tatsaechliche
|
||||
/// SSID des verbundenen Netzes, falls ermittelbar - wird gemerkt, damit
|
||||
/// kuenftige Verbindungen exakt (statt per Praefix) angefragt werden koennen
|
||||
/// (siehe [MlrsNetworkController.requestNetwork]).
|
||||
class MlrsNetworkAvailable extends MlrsNetworkEvent {
|
||||
const MlrsNetworkAvailable({this.gatewayAddress});
|
||||
const MlrsNetworkAvailable({this.gatewayAddress, this.ssid});
|
||||
|
||||
final String? gatewayAddress;
|
||||
final String? ssid;
|
||||
}
|
||||
|
||||
/// Die Anfrage konnte nicht erfuellt werden (Nutzer hat den Systemdialog
|
||||
@@ -79,9 +84,13 @@ abstract class MlrsNetworkController {
|
||||
Stream<MlrsNetworkEvent> get events;
|
||||
|
||||
/// Loest `ConnectivityManager.requestNetwork()` mit einem
|
||||
/// `WifiNetworkSpecifier` aus, dessen SSID-Muster auf [ssidPrefix] passt.
|
||||
/// `WifiNetworkSpecifier` aus. Ist [preferredSsid] gesetzt (zuvor
|
||||
/// erfolgreich verbundene, gemerkte SSID), wird exakt danach gefragt -
|
||||
/// Android kann das dann ohne erneuten Systemdialog automatisch bewilligen
|
||||
/// (Doku Abschnitt 8: "Verbindung automatisch herstellen"). Sonst wird
|
||||
/// [ssidPrefix] als Praefix-Muster verwendet (zeigt immer den Dialog).
|
||||
/// Das Ergebnis kommt asynchron ueber [events] (available/unavailable).
|
||||
Future<void> requestNetwork(String ssidPrefix);
|
||||
Future<void> requestNetwork(String ssidPrefix, {String? preferredSsid});
|
||||
|
||||
/// Meldet den Callback ab und geht damit von der aktuellen Anfrage
|
||||
/// zurueck - keine weiteren [events] danach, bis erneut angefragt wird.
|
||||
@@ -139,6 +148,7 @@ class MethodChannelMlrsNetworkController implements MlrsNetworkController {
|
||||
return switch (map['type']) {
|
||||
'available' => MlrsNetworkAvailable(
|
||||
gatewayAddress: map['gatewayAddress'] as String?,
|
||||
ssid: map['ssid'] as String?,
|
||||
),
|
||||
'lost' => const MlrsNetworkLost(),
|
||||
_ => const MlrsNetworkUnavailable(),
|
||||
@@ -155,8 +165,11 @@ class MethodChannelMlrsNetworkController implements MlrsNetworkController {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> requestNetwork(String ssidPrefix) => _methodChannel
|
||||
.invokeMethod('requestNetwork', {'ssidPrefix': ssidPrefix});
|
||||
Future<void> requestNetwork(String ssidPrefix, {String? preferredSsid}) =>
|
||||
_methodChannel.invokeMethod('requestNetwork', {
|
||||
'ssidPrefix': ssidPrefix,
|
||||
'exactSsid': preferredSsid,
|
||||
});
|
||||
|
||||
@override
|
||||
Future<void> releaseNetwork() => _methodChannel.invokeMethod('releaseNetwork');
|
||||
|
||||
Reference in New Issue
Block a user