finished select period dialog design

This commit is contained in:
ashrafzarkanisala
2024-07-27 22:35:53 +03:00
parent 0cad30557d
commit 0783f8dacd
8 changed files with 541 additions and 53 deletions
@@ -0,0 +1,62 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/scene/view/scene_tasks_view.dart';
import 'package:syncrow_app/features/scene/widgets/bottom_sheet/effective_period_bottom_sheet.dart';
import 'package:syncrow_app/features/scene/widgets/scene_list_tile.dart';
import 'package:syncrow_app/features/shared_widgets/default_container.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_large.dart';
import 'package:syncrow_app/utils/context_extension.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
import 'package:syncrow_app/utils/resource_manager/font_manager.dart';
class SceneAutoSettings extends StatelessWidget {
const SceneAutoSettings({super.key});
@override
Widget build(BuildContext context) {
final sceneSettings =
ModalRoute.of(context)!.settings.arguments as Map<String, dynamic>? ??
{};
final sceneId = sceneSettings['sceneId'] as String? ?? '';
final isAutomation = sceneSettings['isAutomation'] as bool? ?? false;
final sceneName = sceneSettings['sceneName'] as String? ?? '';
return Scaffold(
backgroundColor: ColorsManager.backgroundColor,
appBar: AppBar(
centerTitle: true,
backgroundColor: ColorsManager.backgroundColor,
title: const BodyLarge(
text: "Settings",
fontColor: ColorsManager.secondaryColor,
fontWeight: FontsManager.bold,
),
),
body: DefaultContainer(
padding: EdgeInsets.zero,
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
SceneListTile(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
titleString: "Effective Period",
trailingWidget: const Icon(Icons.arrow_forward_ios_rounded),
onPressed: () {
context.customBottomSheet(
child: const EffectPeriodBottomSheetContent(),
);
},
),
Visibility(
visible: sceneName.isNotEmpty,
child: DeleteBottomSheetContent(
isAutomation: isAutomation,
sceneId: sceneId,
),
),
],
),
),
);
}
}
+48 -51
View File
@@ -40,15 +40,17 @@ class SceneTasksView extends StatelessWidget {
SizedBox(
width: 40,
child: GestureDetector(
onTap: sceneSettings.sceneName.isEmpty
? null
: () {
context.customBottomSheet(
child: DeleteBottomSheetContent(
sceneId: sceneSettings.sceneId,
isAutomation: isAutomation),
);
},
onTap: () {
Navigator.pushNamed(
context,
Routes.sceneAutoSettingsRoute,
arguments: {
"sceneId": sceneSettings.sceneId,
"isAutomation": isAutomation,
"sceneName": sceneSettings.sceneName,
},
);
},
child: SvgPicture.asset(
Assets.assetsIconsSettings,
colorFilter: const ColorFilter.mode(
@@ -109,48 +111,43 @@ class DeleteBottomSheetContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return DefaultContainer(
height: context.height * 0.2,
child: ListView(
shrinkWrap: true,
children: [
BlocConsumer<CreateSceneBloc, CreateSceneState>(
listener: (context, state) {
if (state is DeleteSceneSuccess) {
if (state.success) {
navigateToRoute(context, Routes.homeRoute);
BlocProvider.of<SceneBloc>(context).add(
LoadScenes(HomeCubit.getInstance().selectedSpace!.id!));
BlocProvider.of<SceneBloc>(context).add(LoadAutomation(
HomeCubit.getInstance().selectedSpace!.id!));
}
}
},
builder: (context, state) {
return DefaultContainer(
onTap: () {
context.read<CreateSceneBloc>().add(DeleteSceneEvent(
sceneId: sceneId,
unitUuid:
HomeCubit.getInstance().selectedSpace!.id!,
));
},
child: SceneListTile(
titleString: isAutomation
? StringsManager.deleteAutomation
: StringsManager.deleteScene,
leadingWidget: (state is DeleteSceneLoading)
? const SizedBox(
height: 24,
width: 24,
child: CircularProgressIndicator())
: SvgPicture.asset(
Assets.assetsDeleteIcon,
color: ColorsManager.red,
),
));
},
),
],
padding: EdgeInsets.zero,
child: BlocConsumer<CreateSceneBloc, CreateSceneState>(
listener: (context, state) {
if (state is DeleteSceneSuccess) {
if (state.success) {
navigateToRoute(context, Routes.homeRoute);
BlocProvider.of<SceneBloc>(context).add(
LoadScenes(HomeCubit.getInstance().selectedSpace!.id!));
BlocProvider.of<SceneBloc>(context).add(
LoadAutomation(HomeCubit.getInstance().selectedSpace!.id!));
}
}
},
builder: (context, state) {
return DefaultContainer(
onTap: () {
context.read<CreateSceneBloc>().add(DeleteSceneEvent(
sceneId: sceneId,
unitUuid: HomeCubit.getInstance().selectedSpace!.id!,
));
},
child: SceneListTile(
padding: const EdgeInsets.symmetric(horizontal: 8),
titleString: isAutomation
? StringsManager.deleteAutomation
: StringsManager.deleteScene,
leadingWidget: (state is DeleteSceneLoading)
? const SizedBox(
height: 24,
width: 24,
child: CircularProgressIndicator())
: SvgPicture.asset(
Assets.assetsDeleteIcon,
color: ColorsManager.red,
),
));
},
));
}
}