disabled auto connect when switching to fly mode and no disconnect when leavin fly mode, race condition fix for connectionType ( now telemetry not working anymore), UI optimizations: centered speed and alt, zoom to mission uses full screen
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
import 'dart:async';
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -6,12 +5,8 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import '../../app_mode/app_mode_cubit.dart';
|
||||
import '../../transport/connection_type.dart';
|
||||
import '../../transport/link_transport.dart';
|
||||
import '../dmc_colors.dart';
|
||||
import '../providers/connection_settings_provider.dart';
|
||||
import '../providers/flight_mode_provider.dart';
|
||||
import '../providers/wifi_connection_provider.dart';
|
||||
import 'flight_mode_pill.dart';
|
||||
import 'fly_map_controls.dart';
|
||||
import 'header_wind_pill.dart';
|
||||
@@ -110,7 +105,13 @@ class TopModeBar extends ConsumerWidget {
|
||||
// Eintritt in den Fly-Modus setzt immer auf Waypoint
|
||||
// zurueck (Doku 3.11).
|
||||
ref.read(flightModeProvider.notifier).reset();
|
||||
_maybeAutoConnectWifi(ref);
|
||||
// Kein Auto-Connect mehr beim Wechsel in den Fly-Modus
|
||||
// (bewusst entfernt, um das Debuggen auf echter Hardware
|
||||
// zu vereinfachen - Verbindungsaufbau laeuft jetzt
|
||||
// ausschliesslich ueber den expliziten "Connect"-Knopf in
|
||||
// den Settings). Die Verbindung selbst bleibt ohnehin ueber
|
||||
// Moduswechsel hinweg bestehen, siehe
|
||||
// flightControllerLinkProvider.
|
||||
},
|
||||
),
|
||||
],
|
||||
@@ -121,34 +122,6 @@ class TopModeBar extends ConsumerWidget {
|
||||
}
|
||||
}
|
||||
|
||||
/// Verbindet automatisch zur mLRS-Bruecke, wenn in den Fly-Modus gewechselt
|
||||
/// wird (Doku Kommunikationsschicht v2 Abschnitt 8: "Verbindung automatisch
|
||||
/// herstellen bei Wechsel in Fly, wenn WLAN gemerkt"). Voraussetzungen:
|
||||
/// Verbindungsart ist WLAN, "Auto-connect"-Einstellung ist an, und es gibt
|
||||
/// bereits eine gemerkte SSID aus einer frueheren erfolgreichen Verbindung -
|
||||
/// ohne gemerkte SSID muesste ohnehin der Systemdialog erscheinen, das ist
|
||||
/// dann kein "automatisches" Verbinden mehr. Der Fortschritt ist ueber
|
||||
/// [_WifiConnectionProgressPill] sichtbar.
|
||||
Future<void> _maybeAutoConnectWifi(WidgetRef ref) async {
|
||||
final settings = ref.read(connectionSettingsProvider).value;
|
||||
if (settings == null) return;
|
||||
if (settings.connectionType != ConnectionType.wifi) return;
|
||||
if (!settings.connectionAutoConnect) return;
|
||||
if (settings.connectionWifiLastSsid == null) return;
|
||||
|
||||
final transport = ref.read(wifiTransportProvider);
|
||||
if (transport.currentState == LinkState.connected ||
|
||||
transport.currentState == LinkState.connecting) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
await transport.connect();
|
||||
} on LinkConnectException {
|
||||
// Grund/Nachricht sind bereits ueber den State-Stream gemeldet, siehe
|
||||
// _WifiConnectionProgressPill.
|
||||
}
|
||||
}
|
||||
|
||||
class _ModeButton extends StatelessWidget {
|
||||
const _ModeButton({
|
||||
required this.label,
|
||||
|
||||
Reference in New Issue
Block a user