import 'package:flutter/material.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/community_structure_widget.dart'; import 'package:syncrow_web/pages/spaces_management/widgets/gradient_canvas_border_widget.dart'; import 'package:syncrow_web/pages/spaces_management/widgets/sidebar_widget.dart'; class LoadedSpaceView extends StatefulWidget { final List communities; final CommunityModel? selectedCommunity; final SpaceModel? selectedSpace; final ValueChanged? onCommunitySelected; final ValueChanged? onSpaceSelected; final List? products; const LoadedSpaceView({ super.key, required this.communities, this.selectedCommunity, this.selectedSpace, required this.onCommunitySelected, required this.onSpaceSelected, this.products, }); @override _LoadedStateViewState createState() => _LoadedStateViewState(); } class _LoadedStateViewState extends State { @override Widget build(BuildContext context) { return Stack( clipBehavior: Clip.none, children: [ Row( children: [ SidebarWidget( communities: widget.communities, onCommunitySelected: widget.onCommunitySelected, onSpaceSelected: widget.onSpaceSelected, selectedSpaceUuid: widget.selectedSpace?.uuid, onSelectedSpaceChanged: (String? spaceUuid) { setState(() { final selectedSpace = findSpaceByUuid(spaceUuid, widget.communities); if (selectedSpace != null) { widget.onSpaceSelected!(selectedSpace); } }); }), CommunityStructureArea( selectedCommunity: widget.selectedCommunity, selectedSpace: widget.selectedSpace, spaces: widget.selectedCommunity?.spaces ?? [], products: widget.products, onSpaceSelected: (SpaceModel? space) { setState(() { widget.onSpaceSelected!(space); }); }, ), ], ), const GradientCanvasBorderWidget(), ], ); } SpaceModel? findSpaceByUuid(String? uuid, List communities) { for (var community in communities) { for (var space in community.spaces) { if (space.uuid == uuid) return space; } } return null; } }