mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2025-07-04 05:00:39 +00:00
Compare commits
No commits in common. "31a429b42340bc75a0bc32bccec2802bbdd8b588" and "88a726b1e298195c9ab9a441c9faf99150a1d0f7" have entirely different histories.
31a429b423
...
88a726b1e2
10 changed files with 38 additions and 91 deletions
|
@ -54,7 +54,6 @@
|
|||
"isoValuesFilterDescription": "Select the ISO values to display. These may be your most commonly used values or those supported by your camera.",
|
||||
"equipmentProfile": "Equipment profile",
|
||||
"equipmentProfiles": "Equipment profiles",
|
||||
"tapToAdd": "Tap to add",
|
||||
"general": "General",
|
||||
"keepScreenOn": "Keep screen on",
|
||||
"haptics": "Haptics",
|
||||
|
|
|
@ -42,7 +42,6 @@
|
|||
"film": "Pellicule",
|
||||
"equipment": "Équipement",
|
||||
"equipmentProfileName": "Nom du profil de l'équipement",
|
||||
"tapToAdd": "Appuie pour ajouter",
|
||||
"equipmentProfileNameHint": "Praktica MTL5B",
|
||||
"equipmentProfileAllValues": "Tout",
|
||||
"apertureValues": "Valeurs Aperture",
|
||||
|
|
|
@ -54,7 +54,6 @@
|
|||
"isoValuesFilterDescription": "Выберите значения ISO для отображения. Это может быть наиболее часто используемые значения или значения, поддерживаемые вашей камерой.",
|
||||
"equipmentProfile": "Оборудование",
|
||||
"equipmentProfiles": "Профили оборудования",
|
||||
"tapToAdd": "Нажмите, чтобы добавить",
|
||||
"general": "Общие",
|
||||
"keepScreenOn": "Запрет блокировки",
|
||||
"haptics": "Вибрация",
|
||||
|
|
|
@ -54,7 +54,6 @@
|
|||
"isoValuesFilterDescription": "选择要显示的 ISO。这些值可能是您最常用的值,也可能是相机支持的值。",
|
||||
"equipmentProfile": "设备配置",
|
||||
"equipmentProfiles": "设备配置",
|
||||
"tapToAdd": "點擊添加",
|
||||
"general": "通用",
|
||||
"keepScreenOn": "保持屏幕常亮",
|
||||
"haptics": "震动",
|
||||
|
|
|
@ -14,6 +14,7 @@ class Dimens {
|
|||
static const double grid48 = 48;
|
||||
static const double grid56 = 56;
|
||||
static const double grid72 = 72;
|
||||
static const double grid168 = 168;
|
||||
|
||||
static const double paddingS = 8;
|
||||
static const double paddingM = 16;
|
||||
|
@ -29,8 +30,6 @@ class Dimens {
|
|||
static const double enabledOpacity = 1.0;
|
||||
static const double disabledOpacity = 0.38;
|
||||
|
||||
static const double sliverAppBarExpandedHeight = 168;
|
||||
|
||||
// TopBar
|
||||
static const double readingContainerDoubleValueHeight = 128;
|
||||
static const double readingContainerSingleValueHeight = 76;
|
||||
|
|
|
@ -1,30 +1,24 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:lightmeter/generated/l10n.dart';
|
||||
import 'package:lightmeter/res/dimens.dart';
|
||||
|
||||
class IconPlaceholder extends StatelessWidget {
|
||||
final IconData icon;
|
||||
final String text;
|
||||
|
||||
const IconPlaceholder({
|
||||
required this.icon,
|
||||
required this.text,
|
||||
super.key,
|
||||
});
|
||||
class EmptyExposurePairsList extends StatelessWidget {
|
||||
const EmptyExposurePairsList({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ConstrainedBox(
|
||||
constraints: BoxConstraints(maxWidth: MediaQuery.sizeOf(context).width / 2),
|
||||
constraints: BoxConstraints(maxWidth: MediaQuery.of(context).size.width / 2),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Icon(
|
||||
icon,
|
||||
Icons.not_interested,
|
||||
color: Theme.of(context).colorScheme.onBackground,
|
||||
),
|
||||
const SizedBox(height: Dimens.grid8),
|
||||
Text(
|
||||
text,
|
||||
S.of(context).noExposurePairs,
|
||||
style: Theme.of(context)
|
||||
.textTheme
|
||||
.bodyMedium
|
|
@ -1,10 +1,9 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:lightmeter/data/models/exposure_pair.dart';
|
||||
import 'package:lightmeter/generated/l10n.dart';
|
||||
import 'package:lightmeter/res/dimens.dart';
|
||||
|
||||
import 'package:lightmeter/screens/metering/components/shared/exposure_pairs_list/components/empty_exposure_pairs_list/widget_list_exposure_pairs_empty.dart';
|
||||
import 'package:lightmeter/screens/metering/components/shared/exposure_pairs_list/components/exposure_pairs_list_item/widget_item_list_exposure_pairs.dart';
|
||||
import 'package:lightmeter/screens/shared/icon_placeholder/widget_icon_placeholder.dart';
|
||||
|
||||
class ExposurePairsList extends StatelessWidget {
|
||||
final List<ExposurePair> exposurePairs;
|
||||
|
@ -16,10 +15,7 @@ class ExposurePairsList extends StatelessWidget {
|
|||
return AnimatedSwitcher(
|
||||
duration: Dimens.switchDuration,
|
||||
child: exposurePairs.isEmpty
|
||||
? IconPlaceholder(
|
||||
icon: Icons.not_interested,
|
||||
text: S.of(context).noExposurePairs,
|
||||
)
|
||||
? const EmptyExposurePairsList()
|
||||
: Stack(
|
||||
alignment: Alignment.center,
|
||||
children: [
|
||||
|
|
|
@ -4,7 +4,6 @@ import 'package:lightmeter/generated/l10n.dart';
|
|||
import 'package:lightmeter/res/dimens.dart';
|
||||
import 'package:lightmeter/screens/settings/components/metering/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_container/widget_container_equipment_profile.dart';
|
||||
import 'package:lightmeter/screens/settings/components/metering/components/equipment_profiles/components/equipment_profile_screen/components/equipment_profile_name_dialog/widget_dialog_equipment_profile_name.dart';
|
||||
import 'package:lightmeter/screens/shared/icon_placeholder/widget_icon_placeholder.dart';
|
||||
import 'package:lightmeter/screens/shared/sliver_screen/screen_sliver.dart';
|
||||
import 'package:m3_lightmeter_iap/m3_lightmeter_iap.dart';
|
||||
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
|
||||
|
@ -45,17 +44,10 @@ class _EquipmentProfilesScreenState extends State<EquipmentProfilesScreen> {
|
|||
icon: const Icon(Icons.close),
|
||||
),
|
||||
],
|
||||
slivers: profilesCount == 1
|
||||
? [
|
||||
SliverFillRemaining(
|
||||
hasScrollBody: false,
|
||||
child: _EquipmentProfilesListPlaceholder(onTap: _addProfile),
|
||||
)
|
||||
]
|
||||
: [
|
||||
slivers: [
|
||||
SliverList(
|
||||
delegate: SliverChildBuilderDelegate(
|
||||
(context, index) => index > 0 // skip default
|
||||
(context, index) => index > 0
|
||||
? Padding(
|
||||
padding: EdgeInsets.fromLTRB(
|
||||
Dimens.paddingM,
|
||||
|
@ -75,7 +67,6 @@ class _EquipmentProfilesScreenState extends State<EquipmentProfilesScreen> {
|
|||
childCount: profilesCount,
|
||||
),
|
||||
),
|
||||
SliverToBoxAdapter(child: SizedBox(height: MediaQuery.paddingOf(context).bottom)),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
@ -108,32 +99,3 @@ class _EquipmentProfilesScreenState extends State<EquipmentProfilesScreen> {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
class _EquipmentProfilesListPlaceholder extends StatelessWidget {
|
||||
final VoidCallback onTap;
|
||||
|
||||
const _EquipmentProfilesListPlaceholder({required this.onTap});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(bottom: Dimens.sliverAppBarExpandedHeight),
|
||||
child: FractionallySizedBox(
|
||||
widthFactor: 1 / 1.618,
|
||||
child: Center(
|
||||
child: GestureDetector(
|
||||
behavior: HitTestBehavior.translucent,
|
||||
onTap: onTap,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(Dimens.paddingL),
|
||||
child: IconPlaceholder(
|
||||
icon: Icons.add,
|
||||
text: S.of(context).tapToAdd,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,7 +50,6 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
|||
],
|
||||
),
|
||||
),
|
||||
SliverToBoxAdapter(child: SizedBox(height: MediaQuery.paddingOf(context).bottom)),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
|
|
@ -24,7 +24,7 @@ class SliverScreen extends StatelessWidget {
|
|||
SliverAppBar(
|
||||
pinned: true,
|
||||
automaticallyImplyLeading: false,
|
||||
expandedHeight: Dimens.sliverAppBarExpandedHeight,
|
||||
expandedHeight: Dimens.grid168,
|
||||
flexibleSpace: FlexibleSpaceBar(
|
||||
centerTitle: false,
|
||||
titlePadding: const EdgeInsets.all(Dimens.paddingM),
|
||||
|
@ -39,6 +39,7 @@ class SliverScreen extends StatelessWidget {
|
|||
actions: appBarActions,
|
||||
),
|
||||
...slivers,
|
||||
SliverToBoxAdapter(child: SizedBox(height: MediaQuery.of(context).padding.bottom)),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
Loading…
Reference in a new issue