import 'package:flutter/widgets.dart'; import '../../../core/constants/speed_unit.dart'; import '../../../data/models/location_data.dart'; import '../../../data/repositories/location_repository.dart'; import '../../../providers/settings_provider.dart'; /// ViewModel for the speedometer UI. /// /// Thin state manager — subscribes to [LocationRepository] and exposes /// the current display state to the view. No data-layer logic here. class SpeedometerViewModel extends ChangeNotifier { final LocationRepository _repository; final SettingsProvider _settings; SpeedUnit get displayUnit => _settings.currentUnit; LocationData get displayData => _repository.currentData; String get displaySpeedText => _repository.currentData.displaySpeed; String get displayHeading => _repository.currentData.displayHeading; bool get isSpeedValid => _repository.currentData.isSpeedValid; bool get isHeadingValid => _repository.currentData.isHeadingValid; SpeedometerViewModel(this._repository, this._settings); double get displaySpeed { return displayUnit.convert(_repository.currentData.speed); } }