separated IconPlaceholder

This commit is contained in:
Vadim 2023-09-01 22:52:49 +02:00
parent 1804e37033
commit 31a429b423
3 changed files with 26 additions and 27 deletions

View file

@ -1,9 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:lightmeter/data/models/exposure_pair.dart'; import 'package:lightmeter/data/models/exposure_pair.dart';
import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/res/dimens.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/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 { class ExposurePairsList extends StatelessWidget {
final List<ExposurePair> exposurePairs; final List<ExposurePair> exposurePairs;
@ -15,7 +16,10 @@ class ExposurePairsList extends StatelessWidget {
return AnimatedSwitcher( return AnimatedSwitcher(
duration: Dimens.switchDuration, duration: Dimens.switchDuration,
child: exposurePairs.isEmpty child: exposurePairs.isEmpty
? const EmptyExposurePairsList() ? IconPlaceholder(
icon: Icons.not_interested,
text: S.of(context).noExposurePairs,
)
: Stack( : Stack(
alignment: Alignment.center, alignment: Alignment.center,
children: [ children: [

View file

@ -4,6 +4,7 @@ import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/res/dimens.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_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/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:lightmeter/screens/shared/sliver_screen/screen_sliver.dart';
import 'package:m3_lightmeter_iap/m3_lightmeter_iap.dart'; import 'package:m3_lightmeter_iap/m3_lightmeter_iap.dart';
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart'; import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
@ -116,30 +117,18 @@ class _EquipmentProfilesListPlaceholder extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Padding( return Padding(
padding: const EdgeInsets.only( padding: const EdgeInsets.only(bottom: Dimens.sliverAppBarExpandedHeight),
bottom: Dimens.sliverAppBarExpandedHeight,
),
child: FractionallySizedBox( child: FractionallySizedBox(
widthFactor: 1 / 1.618, widthFactor: 1 / 1.618,
child: Center( child: Center(
child: GestureDetector( child: GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: onTap, onTap: onTap,
child: Opacity( child: Padding(
opacity: Dimens.disabledOpacity, padding: const EdgeInsets.all(Dimens.paddingL),
child: Column( child: IconPlaceholder(
mainAxisAlignment: MainAxisAlignment.center, icon: Icons.add,
children: [ text: S.of(context).tapToAdd,
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

@ -1,24 +1,30 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/res/dimens.dart'; import 'package:lightmeter/res/dimens.dart';
class EmptyExposurePairsList extends StatelessWidget { class IconPlaceholder extends StatelessWidget {
const EmptyExposurePairsList({super.key}); final IconData icon;
final String text;
const IconPlaceholder({
required this.icon,
required this.text,
super.key,
});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ConstrainedBox( return ConstrainedBox(
constraints: BoxConstraints(maxWidth: MediaQuery.of(context).size.width / 2), constraints: BoxConstraints(maxWidth: MediaQuery.sizeOf(context).width / 2),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Icon( Icon(
Icons.not_interested, icon,
color: Theme.of(context).colorScheme.onBackground, color: Theme.of(context).colorScheme.onBackground,
), ),
const SizedBox(height: Dimens.grid8), const SizedBox(height: Dimens.grid8),
Text( Text(
S.of(context).noExposurePairs, text,
style: Theme.of(context) style: Theme.of(context)
.textTheme .textTheme
.bodyMedium .bodyMedium