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>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
fc7d014fda
commit
db6b46140c
@@ -0,0 +1,21 @@
|
||||
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,
|
||||
);
|
||||
Reference in New Issue
Block a user