refactor: complete layered architecture migration
Delete old flat files, wire new DI in main.dart:
- Removed: gps_service.dart, config/, models/, providers/overlay_provider.dart,
screens/, services/gps_data_manager.dart, services/overlay_service.dart
- Kept: settings_provider.dart (thin, correct), logger.dart (shared util)
- main.dart now wires: LocationRepository → SpeedometerViewModel → SpeedometerView
- overlay_provider.dart deferred, stub in ui/features/overlay/
- flutter analyze: 30 info-level constant_identifier_names warnings (project convention),
zero errors, zero warnings — builds clean
New structure:
lib/
core/constants/ — gps, overlay, timing, speed_unit
core/theme/ — color_themes
data/
models/ — LocationData (immutable domain model)
services/ — GpsService (stateless wrapper), OverlayService (IPC)
repositories/ — LocationRepository (business logic, ChangeNotifier)
providers/ — SettingsProvider (thin, unchanged)
ui/
features/
speedometer/ — SpeedometerViewModel + SpeedometerView
overlay/ — Stub ViewModel + View (deferred)
shared/ — SpeedDisplay widget
services/ — Logger (shared util)
This commit is contained in:
@@ -13,7 +13,7 @@ import '../services/gps_service.dart';
|
||||
/// - GPS stream management (start/stop/restart)
|
||||
/// - Data processing (staleness, precision switching, validation)
|
||||
/// - Lifecycle management (app foreground/background, wake lock)
|
||||
class LocationRepository extends WidgetsBindingObserver {
|
||||
class LocationRepository extends ChangeNotifier with WidgetsBindingObserver {
|
||||
StreamSubscription<Position>? _gpsSubscription;
|
||||
final StreamController<LocationData> _dataController =
|
||||
StreamController<LocationData>.broadcast();
|
||||
@@ -238,6 +238,7 @@ class LocationRepository extends WidgetsBindingObserver {
|
||||
if (_isDisposed) return;
|
||||
_currentData = newData;
|
||||
_dataController.add(newData);
|
||||
notifyListeners();
|
||||
Logger.debug('Broadcasting data: ${newData.displaySpeed} ${newData.displayHeading}', 'LocationRepository');
|
||||
}
|
||||
|
||||
@@ -315,7 +316,9 @@ class LocationRepository extends WidgetsBindingObserver {
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
_isDisposed = true;
|
||||
Logger.info('Disposing location repository...', 'LocationRepository');
|
||||
WidgetsBinding.instance.removeObserver(this);
|
||||
|
||||
Reference in New Issue
Block a user