import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_web/pages/device_managment/shared/navigate_home_grid_view.dart'; import 'package:syncrow_web/pages/spaces_management/bloc/space_management_bloc.dart'; import 'package:syncrow_web/pages/spaces_management/bloc/space_management_event.dart'; import 'package:syncrow_web/pages/spaces_management/bloc/space_management_state.dart'; import 'package:syncrow_web/pages/spaces_management/model/community_model.dart'; import 'package:syncrow_web/pages/spaces_management/model/product_model.dart'; import 'package:syncrow_web/pages/spaces_management/model/space_model.dart'; import 'package:syncrow_web/pages/spaces_management/widgets/loaded_space_widget.dart'; import 'package:syncrow_web/services/product_api.dart'; import 'package:syncrow_web/services/space_mana_api.dart'; import 'package:syncrow_web/web_layout/web_scaffold.dart'; class SpaceManagementPage extends StatefulWidget { const SpaceManagementPage({super.key}); @override SpaceManagementPageState createState() => SpaceManagementPageState(); } class SpaceManagementPageState extends State { CommunityModel? selectedCommunity; SpaceModel? selectedSpace; final CommunitySpaceManagementApi _api = CommunitySpaceManagementApi(); final ProductApi _productApi = ProductApi(); Map> communitySpaces = {}; List products = []; bool isProductDataLoaded = false; @override void initState() { super.initState(); } @override Widget build(BuildContext context) { return BlocProvider( create: (context) => SpaceManagementBloc(_api, _productApi) ..add(LoadCommunityAndSpacesEvent()), child: WebScaffold( appBarTitle: Text('Space Management', style: Theme.of(context).textTheme.headlineLarge), enableMenuSidebar: false, rightBody: const NavigateHomeGridView(), scaffoldBody: BlocBuilder( builder: (context, state) { if (state is SpaceManagementLoading) { return const Center(child: CircularProgressIndicator()); } else if (state is SpaceManagementLoaded) { return LoadedSpaceView( communities: state.communities, selectedCommunity: state.selectedCommunity, selectedSpace: state.selectedSpace, products: state.products, onCommunitySelected: (community) { setState(() { selectedCommunity = community; }); }, onSpaceSelected: (space) { setState(() { selectedSpace = space; }); }, ); } else if (state is SpaceManagementError) { return Center(child: Text('Error: ${state.errorMessage}')); } return Container(); }), ), ); } }