Files
dmc/app/lib/ui/providers/current_mission_provider.dart
T
Constantin LeueandClaude Sonnet 5 db6b46140c Add center reticle control for dropping waypoints
- ReticleButton: fixed-at-screen-center "+" circle (HTML prototype:
  #centerCluster/#reticleBtn), tapping it drops a waypoint at the current
  map center.
- CurrentMissionNotifier (Riverpod): holds the waypoint list for the
  mission being edited. Reactive single-value state per doc 4.16, so
  Riverpod rather than a new Bloc/Cubit.
- MissionMap now renders each waypoint as a CircleLayer marker (white
  border, dark fill, matching the prototype's L.circleMarker styling).
- PlanScreen owns the MapController needed to read the camera center on
  tap, and wires the reticle to the provider.

Default altitude/speed/catch-radius (60m / 15 m/s / 60m) are hardcoded to
the T1 Ranger default profile values from the prototype for now - TODO
once drone profile settings (doc 3.5) exist.

Verified with flutter analyze, flutter test (incl. a new test covering the
add-waypoint path), and a real run on the Pixel_10a emulator: panned the
map and dropped two waypoints, both markers stayed correctly georeferenced.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 22:21:35 +02:00

22 lines
666 B
Dart

import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../domain/waypoint/flat_waypoint_list.dart';
/// Haelt die Wegpunktliste der aktuell in Bearbeitung befindlichen Mission
/// (Architektur-Doku 3.2/3.6). Reaktiver Einzelwert im Sinne von 4.16 -
/// daher Riverpod statt Bloc; die App-Mode State Machine bleibt in
/// AppModeCubit.
class CurrentMissionNotifier extends Notifier<List<Waypoint>> {
@override
List<Waypoint> build() => [];
void addWaypoint(Waypoint waypoint) {
state = [...state, waypoint];
}
}
final currentMissionProvider =
NotifierProvider<CurrentMissionNotifier, List<Waypoint>>(
CurrentMissionNotifier.new,
);