m3_lightmeter/lib/screens/metering/state_metering.dart
2023-09-13 17:39:30 +02:00

36 lines
835 B
Dart

import 'package:flutter/material.dart';
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
@immutable
abstract class MeteringState {
final double? ev100;
final IsoValue iso;
final NdValue nd;
final bool isMetering;
const MeteringState({
this.ev100,
required this.iso,
required this.nd,
required this.isMetering,
});
}
class LoadingState extends MeteringState {
const LoadingState({
required super.iso,
required super.nd,
}) : super(isMetering: true);
}
class MeteringDataState extends MeteringState {
const MeteringDataState({
required super.ev100,
required super.iso,
required super.nd,
required super.isMetering,
});
double? get ev => ev100 != null ? ev100! + log2(iso.value / 100) - nd.stopReduction : null;
bool get hasError => ev == null;
}