import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_web/pages/routines/bloc/create_routine_bloc/create_routine_event.dart'; import 'package:syncrow_web/pages/routines/bloc/create_routine_bloc/create_routine_state.dart'; import 'package:syncrow_web/pages/routines/bloc/create_routine_bloc/create_routine_bloc.dart'; import 'package:syncrow_web/pages/routines/create_new_routines/commu_dropdown.dart'; import 'package:syncrow_web/pages/routines/create_new_routines/space_dropdown.dart'; import 'package:syncrow_web/utils/color_manager.dart'; class CreateNewRoutinesDialog extends StatefulWidget { const CreateNewRoutinesDialog({Key? key}) : super(key: key); @override State createState() => _CreateNewRoutinesDialogState(); } class _CreateNewRoutinesDialogState extends State { String? _selectedCommunity; String? _selectedSpace; void _fetchSpaces(String communityId) { context .read() .add(SpaceOnlyWithDevicesEvent(communityId)); } @override Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { final _bloc = BlocProvider.of(context); final spaces = _bloc.spacesOnlyWithDevices; final isLoading = state is SpaceWithDeviceLoadingState; String spaceHint = 'Select a community first'; if (_selectedCommunity != null) { if (isLoading) { spaceHint = 'Loading spaces...'; } else if (spaces.isEmpty) { spaceHint = 'No spaces available'; } else { spaceHint = 'Select Space'; } } return AlertDialog( backgroundColor: Colors.white, insetPadding: EdgeInsets.zero, contentPadding: EdgeInsets.zero, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), title: Text( 'Create New Routines', textAlign: TextAlign.center, style: Theme.of(context).textTheme.bodyMedium!.copyWith( color: ColorsManager.primaryColor, ), ), content: Column( mainAxisSize: MainAxisSize.min, children: [ const Divider(), Padding( padding: const EdgeInsets.only(left: 15, right: 15), child: CommunityDropdown( selectedValue: _selectedCommunity, onChanged: (String? newValue) { setState(() { _selectedCommunity = newValue; _selectedSpace = null; }); if (newValue != null) { _fetchSpaces(newValue); } }, ), ), const SizedBox(height: 5), Padding( padding: const EdgeInsets.only(left: 15, right: 15), child: SpaceDropdown( hintMessage: spaceHint, spaces: spaces, selectedValue: _selectedSpace, onChanged: (String? newValue) { setState(() { _selectedSpace = newValue; }); }, ), ), const Divider(), Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Padding( padding: const EdgeInsets.only( left: 20, right: 20, ), child: TextButton( onPressed: () { Navigator.of(context).pop(); }, child: Text( 'Cancel', style: Theme.of(context).textTheme.bodyMedium!.copyWith( fontWeight: FontWeight.w400, fontSize: 14, color: ColorsManager.blackColor, ), ), ), ), Padding( padding: const EdgeInsets.only( left: 20, right: 20, ), child: TextButton( onPressed: _selectedCommunity != null && _selectedSpace != null ? () { Navigator.of(context).pop({ 'community': _selectedCommunity, 'space': _selectedSpace, }); } : null, child: Text( 'Next', style: Theme.of(context).textTheme.bodyMedium!.copyWith( fontWeight: FontWeight.w400, fontSize: 14, color: _selectedCommunity != null && _selectedSpace != null ? ColorsManager.blueColor : Colors.blue.shade100, ), ), ), ), ], ), SizedBox(height: 10), ], ), ); }, ); } }