m3_lightmeter/lib/screens/metering/state_metering.dart

37 lines
835 B
Dart
Raw Normal View History

import 'package:flutter/material.dart';
ML-42 Implement equipment profiles creating (#45) * added Equipment section placeholder * get iso & nd values from equipment profile * use photography values from remote repo * removed equipment section * wip * moved `EquipmentProfileProvider` from iap repo * wip * moved equipment profiles screen from iap * improved equipment profiles screen * mock add/delete * collapse on expand * add profile with name * show selected values count (wip) * fixed profile update * cleanup * Update pubspec.yaml * made `AnimatedDialogPicker` more generic * switched to local `Dimens` * fixed `MeteringTopBarShape` * rename * animated `EquipmentProfileContainer` * added default equipment profile * change equipment profile name via dialog * fixed profile selection * filter equipment profile update/delete * removed `enabled` param from settings section * non-null `EquipmentProfile` * fixed duplicate GlobalKeys * animated equipment list * Update ci.yml * fixed shutter speed anchor issue * autofocus * added firebase to project * save/restore equipment profiles * unified `SliverList` * added SSH key to iap repo * Update ci.yml * ci recursive submodules * try full url * Revert "try full url" This reverts commit a9b692b60ea5b2e88188a5d497467708becb4a02. * restore firebase_options.dart * changed runner to macos * restore options earlier * removed problematic file from analysis :) * removed launch_app * textoverflow * implemented `DialogRangePicker` * add iap repo to cd * typo * added workflow_dispatch to crowdin push * removed `equipmentProfileValuesCount` from intl * fr & ru translations * style * removed iap
2023-03-30 19:24:18 +00:00
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
2022-10-29 18:02:45 +00:00
@immutable
abstract class MeteringState {
final double? ev100;
final IsoValue iso;
final NdValue nd;
final bool isMetering;
2022-10-29 18:02:45 +00:00
const MeteringState({
this.ev100,
2022-10-29 18:02:45 +00:00
required this.iso,
required this.nd,
required this.isMetering,
2022-10-29 18:02:45 +00:00
});
}
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;
}