m3_lightmeter/lib/screens/metering/utils/notifier_volume_keys.dart

35 lines
918 B
Dart
Raw Normal View History

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:lightmeter/data/models/volume_action.dart';
import 'package:lightmeter/data/volume_events_service.dart';
class VolumeKeysNotifier extends ChangeNotifier with RouteAware {
2023-11-01 19:45:48 +00:00
final VolumeEventsService _volumeEventsService;
late final StreamSubscription<VolumeKey> _volumeKeysSubscription;
VolumeKey _value = VolumeKey.up;
2023-11-01 19:45:48 +00:00
VolumeKeysNotifier(this._volumeEventsService) {
_volumeKeysSubscription = _volumeEventsService
.volumeButtonsEventStream()
.map((event) => event == 24 ? VolumeKey.up : VolumeKey.down)
.listen((event) {
value = event;
});
}
VolumeKey get value => _value;
2023-11-01 19:45:48 +00:00
@protected
set value(VolumeKey newValue) {
_value = newValue;
notifyListeners();
}
@override
Future<void> dispose() async {
await _volumeKeysSubscription.cancel();
super.dispose();
}
}