m3_lightmeter/lib/screens/metering/state_metering.dart

45 lines
1.1 KiB
Dart
Raw Normal View History

import 'package:flutter/material.dart';
2022-12-16 08:08:12 +00:00
import 'package:lightmeter/data/models/exposure_pair.dart';
import 'package:lightmeter/data/models/film.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 {
2023-05-07 10:17:01 +00:00
final Film film;
final IsoValue iso;
final NdValue nd;
const MeteringState({
required this.film,
required this.iso,
required this.nd,
});
}
class LoadingState extends MeteringState {
2023-05-07 10:17:01 +00:00
const LoadingState({
required super.film,
required super.iso,
required super.nd,
});
}
2023-05-05 21:08:20 +00:00
class MeteringDataState extends MeteringState {
final double? ev;
2022-10-29 18:02:45 +00:00
final List<ExposurePair> exposurePairs;
2023-05-05 21:08:20 +00:00
final bool continuousMetering;
2022-10-29 18:02:45 +00:00
const MeteringDataState({
2022-10-29 18:02:45 +00:00
required this.ev,
2023-05-07 10:17:01 +00:00
required super.film,
required super.iso,
required super.nd,
2022-10-29 18:02:45 +00:00
required this.exposurePairs,
2023-05-05 21:08:20 +00:00
required this.continuousMetering,
2022-10-29 18:02:45 +00:00
});
ExposurePair? get fastest => exposurePairs.isEmpty ? null : exposurePairs.first;
ExposurePair? get slowest => exposurePairs.isEmpty ? null : exposurePairs.last;
2023-05-05 21:08:20 +00:00
bool get hasError => ev == null;
}