Rebuild the Flutter/DJI-MSDK-V4 Fly App to the v2 UI kit and wire the full SDK surface behind it. Native (Kotlin): split DjiSdkBridge into a method/event router delegating to per-subsystem SubBridge helpers sharing a BridgeCtx — FlightController (takeoff/land/RTH + rich telemetry), Camera (mode/record/photo/exposure), Gimbal, Mission (Waypoint + ActiveTrack; QuickShots via ActiveTrack QUICK_SHOT), Media (MediaManager list/thumbnail/download), and optional DJI account login. Manifest gains scoped media permissions. Flutter: ten screens under lib/ui/ (Flight HUD, capture modes, camera settings, settings menu, map+waypoints, home, album, academy, profile, routes/flight logs), driven by an expanded FlightModel. New PVIcon renders the kit's SVG paths via flutter_svg; map uses flutter_map + latlong2. Pin transitive androidx.core/browser down to SDK-35-compatible versions so the newer plugins don't force AGP 8.9.1 onto the DJI toolchain. Verified with `flutter build apk --debug` (compiles Dart + all Kotlin); runtime behaviour is untested here — it needs a physical DJI-connected device. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
17 lines
526 B
Dart
17 lines
526 B
Dart
import 'package:flutter/material.dart';
|
|
|
|
import 'simple_list_page.dart';
|
|
|
|
/// Saved waypoint routes. Routes are built live on the Map screen; a persisted
|
|
/// route library is a later add, so this shows the empty state for now.
|
|
class RoutesPage extends StatelessWidget {
|
|
const RoutesPage({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) => const SimpleListPage(
|
|
title: 'My routes',
|
|
emptyIcon: 'route',
|
|
emptyText: 'No saved routes yet.\nCreate one on the map during flight.',
|
|
);
|
|
}
|