mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 07:07:19 +00:00
79 lines
2.7 KiB
Dart
79 lines
2.7 KiB
Dart
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<CommunityModel> communities;
|
|
final CommunityModel? selectedCommunity;
|
|
final SpaceModel? selectedSpace;
|
|
final ValueChanged<CommunityModel>? onCommunitySelected;
|
|
final ValueChanged<SpaceModel?>? onSpaceSelected;
|
|
final List<ProductModel>? 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<LoadedSpaceView> {
|
|
@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<CommunityModel> communities) {
|
|
for (var community in communities) {
|
|
for (var space in community.spaces) {
|
|
if (space.uuid == uuid) return space;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
}
|