feat(display): Sprint 4 — pantalla principal del autopilot
Archivos nuevos:
display/lib/data/autopilot_state.dart
- ChangeNotifier con todos los datos del autopilot
- Simulación de velero en mar (heading drift / P-controller)
- API pública estable: engage(), disengage(), adjustSetpoint(), selectMode()
- Sprint 7: los internos se reemplazan por Modbus RTU, la API no cambia
display/lib/screens/cockpit/cockpit_screen.dart
- Pantalla principal: TopBar, ModeSelector, CompassRose, DataStrip,
HeadingAdjustBar, RudderIndicator, ENGAGE/DISENGAGE
- Logo con triple-tap para ciclar temas (StateWidget con Timer)
- Indicador DEMO visible cuando isConnected == false
- Engranaje → AppearanceSettingsScreen
display/lib/widgets/themed/engage_button.dart
- Botón verde con glow; dimmed cuando ya está engaged
display/lib/widgets/themed/heading_adjust_bar.dart
- Botones << < [SET 048.0°] > >>
- Deshabilitado cuando mode == STANDBY
display/lib/widgets/themed/status_chip.dart
- Indicador de punto + label para NMEA / GPS (ok / warn / off)
Modificado:
display/lib/main.dart
- MultiProvider: agrega AutopilotState al árbol de providers
- Ruta inicial: CockpitScreen.routeName ('/') en lugar de Appearance
AR_electronics — AR-Autopilot Project
This commit is contained in:
+18
-5
@@ -1,15 +1,27 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import 'data/autopilot_state.dart';
|
||||
import 'theme/theme_provider.dart';
|
||||
import 'screens/cockpit/cockpit_screen.dart';
|
||||
import 'screens/settings/appearance_settings.dart';
|
||||
|
||||
Future<void> main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
final themeProvider = await AutopilotThemeProvider.load();
|
||||
runApp(
|
||||
ChangeNotifierProvider<AutopilotThemeProvider>.value(
|
||||
value: themeProvider,
|
||||
MultiProvider(
|
||||
providers: [
|
||||
ChangeNotifierProvider<AutopilotThemeProvider>.value(
|
||||
value: themeProvider,
|
||||
),
|
||||
// AutopilotState drives the cockpit UI.
|
||||
// Sprint 4: internal demo timer (vessel simulation).
|
||||
// Sprint 7: replace with AutopilotStateModbus or wire Modbus RTU here.
|
||||
ChangeNotifierProvider<AutopilotState>(
|
||||
create: (_) => AutopilotState(),
|
||||
),
|
||||
],
|
||||
child: const ArAutopilotApp(),
|
||||
),
|
||||
);
|
||||
@@ -24,10 +36,11 @@ class ArAutopilotApp extends StatelessWidget {
|
||||
title: 'AR-Autopilot',
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: ThemeData(useMaterial3: true),
|
||||
// Initial route — Sprint 4 starts with the Appearance screen for demo
|
||||
initialRoute: AppearanceSettingsScreen.routeName,
|
||||
initialRoute: CockpitScreen.routeName,
|
||||
routes: {
|
||||
AppearanceSettingsScreen.routeName: (_) => const AppearanceSettingsScreen(),
|
||||
CockpitScreen.routeName: (_) => const CockpitScreen(),
|
||||
AppearanceSettingsScreen.routeName: (_) =>
|
||||
const AppearanceSettingsScreen(),
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user