Files
gps-speedo/lib/ui/features/speedometer/speedometer_view_model.dart
irene 54cec166b4 fix: add SettingsProvider to SpeedometerViewModel and fix ProviderNotFoundException
- SpeedometerViewModel now requires both LocationRepository and SettingsProvider
- SpeedometerView uses SettingsProvider.currentTheme instead of non-existent Theme provider
- main.dart: SettingsProvider created before SpeedometerViewModel in provider hierarchy
- Restores proper DI wiring after layered architecture refactor
2026-08-23 23:26:03 +09:00

28 lines
1.1 KiB
Dart

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);
}
}