Introduces legacyDevicesProvider as the canonical AsyncNotifier owning the devices list, with semantic mutation methods (removeDevice, renameDevice, refresh) instead of ref.invalidate from outside. selectedDeviceProvider becomes an AsyncNotifier that persists the selected device id in SharedPreferences and resolves it against the shared list at build time, surviving cold starts. ControlPanelViewModel and LocationViewModel are converted to AsyncNotifier and react to selection changes, refetching positions / geofences / frequent_places automatically. Screens use .when with skipLoadingOnReload to avoid flicker. Multi-device fixes: - DeviceBanner cards now look up positions per device by identificator - LocationMap recenters the camera on device swipe - Country-level fallback zoom when no position is available - Banner shows each device's own info while swiping linked_devices and device_setup feed mutations through the new notifier methods. 30+ legacy view models updated to read selectedDeviceProvider via .value (AsyncNotifier shape).
legacy
A new Flutter project.
Getting Started
For help getting started with Flutter development, view the online documentation.
For instructions integrating Flutter modules to your existing applications, see the add-to-app documentation.