m3_lightmeter/lib/screens/metering/state_metering.dart
Vadim ec9ba1a779
ML-58 Metering UX improvements (#63)
* indicate EV value error

* allow nullable ev100 in `CameraContainerBloc`

* log exif keys

* wip

* removed `UserPreferencesService` from `MeteringBloc`

* added error toast

* conflicts

* lints

* allow stop metering if `hasError`

* fixed `AnimatedDialogPicker` inability to close

* Update build.gradle
2023-05-16 11:47:53 +02:00

44 lines
1.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:lightmeter/data/models/exposure_pair.dart';
import 'package:lightmeter/data/models/film.dart';
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
@immutable
abstract class MeteringState {
final Film film;
final IsoValue iso;
final NdValue nd;
const MeteringState({
required this.film,
required this.iso,
required this.nd,
});
}
class LoadingState extends MeteringState {
const LoadingState({
required super.film,
required super.iso,
required super.nd,
});
}
class MeteringDataState extends MeteringState {
final double? ev;
final List<ExposurePair> exposurePairs;
final bool continuousMetering;
const MeteringDataState({
required this.ev,
required super.film,
required super.iso,
required super.nd,
required this.exposurePairs,
required this.continuousMetering,
});
ExposurePair? get fastest => exposurePairs.isEmpty ? null : exposurePairs.first;
ExposurePair? get slowest => exposurePairs.isEmpty ? null : exposurePairs.last;
bool get hasError => ev == null;
}