finished get scene details

This commit is contained in:
ashrafzarkanisala
2024-06-30 01:54:08 +03:00
parent 043e8c1e2d
commit 6584b894c4
17 changed files with 1428 additions and 520 deletions
@@ -22,14 +22,16 @@ class ThenAddedTasksContainer extends StatelessWidget {
Widget build(BuildContext context) {
String operationValue = '';
if (taskList.code.contains('countdown')) {
final duration = Duration(
seconds:
int.tryParse(taskList.operationalValues.first.value.toString()) ??
0);
final functionValue =
taskList.functionValue ?? taskList.operationalValues.first.value;
final duration =
Duration(seconds: int.tryParse(functionValue.toString()) ?? 0);
operationValue =
"${duration.inHours}h ${duration.inMinutes.remainder(60)}m ";
} else {
operationValue = taskList.operationalValues.first.value.toString();
final functionValue =
taskList.functionValue ?? taskList.operationalValues.first.value;
operationValue = functionValue.toString();
}
return DefaultContainer(
padding: EdgeInsets.zero,
@@ -15,8 +15,11 @@ import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
class ThenDefaultContainer extends StatelessWidget {
const ThenDefaultContainer({
super.key,
required this.sceneId,
});
final String sceneId;
@override
Widget build(BuildContext context) {
return DefaultContainer(
@@ -47,39 +50,64 @@ class ThenDefaultContainer extends StatelessWidget {
padding: EdgeInsets.zero,
),
const LightDivider(),
BlocBuilder<CreateSceneBloc, CreateSceneState>(
builder: (context, state) {
if (state is AddSceneTask) {
final taskLists = state.tasksList;
if (taskLists.isNotEmpty) {
return ListView.builder(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemCount: taskLists.length,
itemBuilder: (context, index) {
return ThenAddedTasksContainer(
taskList: taskLists[index],
);
sceneId.isNotEmpty
? BlocProvider(
create: (context) =>
CreateSceneBloc()..add(FetchSceneTasks(sceneId:sceneId)),
child: BlocBuilder<CreateSceneBloc, CreateSceneState>(
builder: (context, state) {
if (state is AddSceneTask) {
final taskLists = state.tasksList;
if (taskLists.isNotEmpty) {
return ListView.builder(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemCount: taskLists.length,
itemBuilder: (context, index) {
return ThenAddedTasksContainer(
taskList: taskLists[index],
);
},
);
}
return const SizedBox();
}
return const SizedBox();
},
);
}
return SceneListTile(
titleString: '+ Add Task',
textAlign: TextAlign.center,
onPressed: () => context.customBottomSheet(
child: const CustomBottomSheetWidget(),
),
);
}
return SceneListTile(
titleString: '+ Add Task',
textAlign: TextAlign.center,
onPressed: () => context.customBottomSheet(
child: const CustomBottomSheetWidget(),
),
);
},
)
))
: BlocBuilder<CreateSceneBloc, CreateSceneState>(
builder: (context, state) {
if (state is AddSceneTask) {
final taskLists = state.tasksList;
if (taskLists.isNotEmpty) {
return ListView.builder(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemCount: taskLists.length,
itemBuilder: (context, index) {
return ThenAddedTasksContainer(
taskList: taskLists[index],
);
},
);
}
return SceneListTile(
titleString: '+ Add Task',
textAlign: TextAlign.center,
onPressed: () => context.customBottomSheet(
child: const CustomBottomSheetWidget(),
),
);
}
return SceneListTile(
titleString: '+ Add Task',
textAlign: TextAlign.center,
onPressed: () => context.customBottomSheet(
child: const CustomBottomSheetWidget(),
),
);
},
)
],
),
);
@@ -1,10 +1,10 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/scene/model/scene_model.dart';
import 'package:syncrow_app/features/scene/model/scenes_model.dart';
import 'package:syncrow_app/features/scene/widgets/scene_view_widget/scene_item.dart';
class SceneGrid extends StatelessWidget {
final List<SceneModel> scenes;
final List<ScenesModel> scenes;
final String? loadingSceneId;
const SceneGrid({
@@ -2,15 +2,18 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/scene/bloc/scene_bloc/scene_bloc.dart';
import 'package:syncrow_app/features/scene/bloc/scene_bloc/scene_event.dart';
import 'package:syncrow_app/features/scene/model/scene_model.dart';
import 'package:syncrow_app/features/scene/enum/create_scene_enum.dart';
import 'package:syncrow_app/features/scene/model/scenes_model.dart';
import 'package:syncrow_app/features/scene/model/scene_settings_route_arguments.dart';
import 'package:syncrow_app/features/shared_widgets/default_container.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_medium.dart';
import 'package:syncrow_app/generated/assets.dart';
import 'package:syncrow_app/navigation/routing_constants.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
class SceneItem extends StatelessWidget {
final SceneModel scene;
final ScenesModel scene;
final bool isLoading;
const SceneItem({
@@ -22,6 +25,17 @@ class SceneItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
return DefaultContainer(
onTap: () {
Navigator.pushNamed(
context,
Routes.sceneTasksRoute,
arguments: SceneSettingsRouteArguments(
sceneType: CreateSceneEnum.tabToRun.name,
sceneId: scene.id,
sceneName: scene.name,
),
);
},
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [