working on functions view

This commit is contained in:
ashrafzarkanisala
2024-06-25 10:38:39 +03:00
parent d0ac4a650f
commit 6413d2b876
19 changed files with 405 additions and 196 deletions
@@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_app/features/scene/bloc/create_scene/create_scene_bloc.dart';
import 'package:syncrow_app/features/scene/widgets/scene_list_tile.dart';
import 'package:syncrow_app/features/scene/widgets/bottom_sheet_widget.dart';
import 'package:syncrow_app/features/shared_widgets/default_container.dart';
@@ -44,12 +46,16 @@ class ThenDefaultContainer extends StatelessWidget {
padding: EdgeInsets.zero,
),
const LightDivider(),
SceneListTile(
titleString: '+ Add Task',
textAlign: TextAlign.center,
onPressed: () => context.customBottomSheet(
child: const CustomBottomSheetWidget(),
),
BlocBuilder<CreateSceneBloc, CreateSceneState>(
builder: (context, state) {
return SceneListTile(
titleString: '+ Add Task',
textAlign: TextAlign.center,
onPressed: () => context.customBottomSheet(
child: const CustomBottomSheetWidget(),
),
);
},
)
],
),
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_app/features/devices/bloc/device_manager_bloc/device_manager_bloc.dart';
import 'package:syncrow_app/features/devices/bloc/device_manager_bloc/device_manager_state.dart';
import 'package:syncrow_app/features/devices/model/room_model.dart';
@@ -9,7 +10,7 @@ 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/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/context_extension.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
@@ -18,7 +19,7 @@ class SceneDevicesBody extends StatelessWidget {
super.key,
required TabController tabController,
required this.rooms,
}) : _tabController = tabController;
}) : _tabController = tabController;
final TabController _tabController;
final List<RoomModel>? rooms;
@@ -66,23 +67,17 @@ class SceneDevicesBody extends StatelessWidget {
Widget _buildRoomTab(RoomModel room, BuildContext context) {
return BlocBuilder<DeviceManagerBloc, DeviceManagerState>(
builder: (context, state) {
if (state is GetDevicesLoading) {
if (state.loading && state.devices == null) {
return const Center(child: CircularProgressIndicator());
} else if (state is GetDevicesSuccess) {
} else if (state.devices != null && state.devices!.isNotEmpty) {
return ListView.builder(
itemCount: state.devices?.length ?? 0,
itemCount: state.devices!.length,
itemBuilder: (context, index) {
final device = state.devices![index];
return DefaultContainer(
child: SceneListTile(
minLeadingWidth: 40,
leadingWidget: Image.network(
device.icon ?? '',
errorBuilder: (context, error, stackTrace) => Image.asset(
Assets.assetsIconsLogo,
width: 20,
),
),
leadingWidget: SvgPicture.asset(device.icon ?? ''),
titleWidget: BodyMedium(
text: device.name ?? '',
style: context.titleSmall.copyWith(
@@ -93,20 +88,25 @@ class SceneDevicesBody extends StatelessWidget {
),
trailingWidget: const Icon(
Icons.arrow_forward_ios_rounded,
color: ColorsManager.greyColor,
size: 16,
weight: 0.2,
),
onPressed: () {
Navigator.pushNamed(
context,
Routes.deviceFunctionsRoute,
arguments: device,
);
},
),
);
},
);
} else if (state is GetDevicesError) {
return Center(child: Text(state.error));
} else if (state.error != null) {
return Center(child: Text(state.error!));
} else {
return const SizedBox();
}
return const SizedBox();
},
);
}