Added equipment profiles list placeholder

This commit is contained in:
Vadim 2023-09-01 22:41:13 +02:00
parent 88a726b1e2
commit d0674063d2
8 changed files with 81 additions and 27 deletions

View file

@ -54,6 +54,7 @@
"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",

View file

@ -42,6 +42,7 @@
"film": "Pellicule",
"equipment": "Équipement",
"equipmentProfileName": "Nom du profil de l'équipement",
"tapToAdd": "Appuie pour ajouter",
"equipmentProfileNameHint": "Praktica MTL5B",
"equipmentProfileAllValues": "Tout",
"apertureValues": "Valeurs Aperture",

View file

@ -54,6 +54,7 @@
"isoValuesFilterDescription": "Выберите значения ISO для отображения. Это может быть наиболее часто используемые значения или значения, поддерживаемые вашей камерой.",
"equipmentProfile": "Оборудование",
"equipmentProfiles": "Профили оборудования",
"tapToAdd": "Нажмите, чтобы добавить",
"general": "Общие",
"keepScreenOn": "Запрет блокировки",
"haptics": "Вибрация",

View file

@ -54,6 +54,7 @@
"isoValuesFilterDescription": "选择要显示的 ISO。这些值可能是您最常用的值也可能是相机支持的值。",
"equipmentProfile": "设备配置",
"equipmentProfiles": "设备配置",
"tapToAdd": "點擊添加",
"general": "通用",
"keepScreenOn": "保持屏幕常亮",
"haptics": "震动",

View file

@ -14,7 +14,6 @@ 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;
@ -30,6 +29,8 @@ 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;

View file

@ -44,10 +44,17 @@ class _EquipmentProfilesScreenState extends State<EquipmentProfilesScreen> {
icon: const Icon(Icons.close),
),
],
slivers: [
slivers: profilesCount == 1
? [
SliverFillRemaining(
hasScrollBody: false,
child: _EquipmentProfilesListPlaceholder(onTap: _addProfile),
)
]
: [
SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) => index > 0
(context, index) => index > 0 // skip default
? Padding(
padding: EdgeInsets.fromLTRB(
Dimens.paddingM,
@ -67,6 +74,7 @@ class _EquipmentProfilesScreenState extends State<EquipmentProfilesScreen> {
childCount: profilesCount,
),
),
SliverToBoxAdapter(child: SizedBox(height: MediaQuery.paddingOf(context).bottom)),
],
);
}
@ -99,3 +107,44 @@ 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(
onTap: onTap,
child: Opacity(
opacity: Dimens.disabledOpacity,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
Icons.add,
size: MediaQuery.sizeOf(context).width / (1.618 * 1.618),
),
const SizedBox(height: Dimens.grid4),
Text(
'Tap to add',
style: Theme.of(context).textTheme.headlineSmall,
textAlign: TextAlign.center,
)
],
),
),
),
),
),
);
}
}

View file

@ -50,6 +50,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
],
),
),
SliverToBoxAdapter(child: SizedBox(height: MediaQuery.paddingOf(context).bottom)),
],
),
);

View file

@ -24,7 +24,7 @@ class SliverScreen extends StatelessWidget {
SliverAppBar(
pinned: true,
automaticallyImplyLeading: false,
expandedHeight: Dimens.grid168,
expandedHeight: Dimens.sliverAppBarExpandedHeight,
flexibleSpace: FlexibleSpaceBar(
centerTitle: false,
titlePadding: const EdgeInsets.all(Dimens.paddingM),
@ -39,7 +39,6 @@ class SliverScreen extends StatelessWidget {
actions: appBarActions,
),
...slivers,
SliverToBoxAdapter(child: SizedBox(height: MediaQuery.of(context).padding.bottom)),
],
),
),