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
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import '../../../core/constants/speed_unit.dart';
|
||||
import '../../../data/models/location_data.dart';
|
||||
import '../../../data/repositories/location_repository.dart';
|
||||
@@ -11,22 +10,16 @@ import '../../../providers/settings_provider.dart';
|
||||
/// the current display state to the view. No data-layer logic here.
|
||||
class SpeedometerViewModel extends ChangeNotifier {
|
||||
final LocationRepository _repository;
|
||||
SettingsProvider? _settings;
|
||||
final SettingsProvider _settings;
|
||||
|
||||
SpeedUnit get displayUnit => _settings?.currentUnit ?? SpeedUnit.kmh;
|
||||
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);
|
||||
|
||||
/// Call when the ViewModel is inserted into the provider tree so it
|
||||
/// can listen to SettingsProvider and repository state.
|
||||
void attach(BuildContext context) {
|
||||
_settings = context.read<SettingsProvider>();
|
||||
}
|
||||
SpeedometerViewModel(this._repository, this._settings);
|
||||
|
||||
double get displaySpeed {
|
||||
return displayUnit.convert(_repository.currentData.speed);
|
||||
|
||||
Reference in New Issue
Block a user