import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:smooth_page_indicator/smooth_page_indicator.dart'; import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart'; import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; import 'package:syncrow_app/features/devices/view/widgets/devices_view_header.dart'; import 'package:syncrow_app/features/devices/view/widgets/room_page.dart'; import 'package:syncrow_app/features/devices/view/widgets/rooms_slider.dart'; import 'package:syncrow_app/features/devices/view/widgets/wizard_page.dart'; import 'package:syncrow_app/features/shared_widgets/create_unit.dart'; import 'package:syncrow_app/features/shared_widgets/text_widgets/body_large.dart'; class DevicesViewBody extends StatelessWidget { const DevicesViewBody({ super.key, }); @override Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { if (state is DevicesLoading || state is GetDevicesLoading || state is DevicesCategoriesLoading) { return const Center(child: CircularProgressIndicator()); } else { return HomeCubit.getInstance().spaces?.isEmpty ?? true ? const CreateUnitWidget() : Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ const DevicesViewHeader(), const RoomsSlider(), const SizedBox( height: 10, ), Expanded( child: PageView( controller: HomeCubit.getInstance().devicesPageController, onPageChanged: (index) { HomeCubit.getInstance().devicesPageChanged(index); }, children: [ WizardPage( groupsList: DevicesCubit.getInstance().allCategories ?? [], ), if (HomeCubit.getInstance().selectedSpace != null) if (HomeCubit.getInstance().selectedSpace!.rooms != null) ...HomeCubit.getInstance().selectedSpace!.rooms!.map( (room) { return RoomPage( room: room, ); }, ) ], ), ), HomeCubit.getInstance().selectedSpace != null ? Padding( padding: const EdgeInsets.symmetric( vertical: 7, ), child: SmoothPageIndicator( controller: HomeCubit.getInstance().devicesPageController, count: HomeCubit.getInstance().selectedSpace!.rooms!.length + 1, effect: const WormEffect( paintStyle: PaintingStyle.stroke, dotHeight: 8, dotWidth: 8, ), ), ) : const Center( child: BodyLarge(text: 'No Home Found'), ), ], ); } }, ); } }