mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2024-10-19 14:50:40 +00:00
6bf059ed4d
* 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 a9b692b60e
.
* 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
59 lines
1.7 KiB
Dart
59 lines
1.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:lightmeter/res/dimens.dart';
|
|
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
|
|
|
|
class ExposurePairsListItem<T extends PhotographyStopValue> extends StatelessWidget {
|
|
final T value;
|
|
final bool tickOnTheLeft;
|
|
|
|
const ExposurePairsListItem(
|
|
this.value, {
|
|
required this.tickOnTheLeft,
|
|
super.key,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final List<Widget> rowChildren = [
|
|
Text(
|
|
value.toString(),
|
|
style: labelTextStyle(context).copyWith(color: Theme.of(context).colorScheme.onBackground),
|
|
),
|
|
const SizedBox(width: Dimens.grid8),
|
|
ColoredBox(
|
|
color: Theme.of(context).colorScheme.onBackground,
|
|
child: SizedBox(
|
|
height: 1,
|
|
width: tickLength(),
|
|
),
|
|
),
|
|
if (value.stopType != StopType.full) const SizedBox(width: Dimens.grid4),
|
|
];
|
|
return Row(
|
|
mainAxisAlignment: tickOnTheLeft ? MainAxisAlignment.start : MainAxisAlignment.end,
|
|
children: tickOnTheLeft ? rowChildren.reversed.toList() : rowChildren,
|
|
);
|
|
}
|
|
|
|
TextStyle labelTextStyle(BuildContext context) {
|
|
switch (value.stopType) {
|
|
case StopType.full:
|
|
return Theme.of(context).textTheme.bodyLarge!;
|
|
case StopType.half:
|
|
return Theme.of(context).textTheme.bodyMedium!;
|
|
case StopType.third:
|
|
return Theme.of(context).textTheme.bodySmall!;
|
|
}
|
|
}
|
|
|
|
double tickLength() {
|
|
switch (value.stopType) {
|
|
case StopType.full:
|
|
return Dimens.grid16;
|
|
case StopType.half:
|
|
return Dimens.grid8;
|
|
case StopType.third:
|
|
return Dimens.grid8;
|
|
}
|
|
}
|
|
}
|