Applied the correct scenario of tapping add community icon button.

This commit is contained in:
Faris Armoush
2025-04-15 12:58:20 +03:00
parent db1f29e2b2
commit 616adccfdd
3 changed files with 39 additions and 27 deletions

View File

@ -1,19 +1,15 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/bloc/space_management_bloc.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/bloc/space_management_event.dart';
import 'package:syncrow_web/pages/spaces_management/create_community/view/create_community_dialog.dart';
import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/color_manager.dart';
import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/utils/constants/assets.dart';
class SidebarAddCommunityButton extends StatelessWidget { class SidebarAddCommunityButton extends StatelessWidget {
const SidebarAddCommunityButton({ const SidebarAddCommunityButton({
required this.existingCommunityNames, required this.onTap,
super.key, super.key,
}); });
final List<String> existingCommunityNames; final void Function() onTap;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -30,22 +26,9 @@ class SidebarAddCommunityButton extends StatelessWidget {
), ),
), ),
), ),
onPressed: () => _showCreateCommunityDialog(context), onPressed: onTap,
icon: SvgPicture.asset(Assets.addIcon), icon: SvgPicture.asset(Assets.addIcon),
), ),
); );
} }
void _showCreateCommunityDialog(BuildContext context) => showDialog<void>(
context: context,
builder: (context) => CreateCommunityDialog(
isEditMode: false,
existingCommunityNames: existingCommunityNames,
onCreateCommunity: (name, description) {
context.read<SpaceManagementBloc>().add(
CreateCommunityEvent(name, description, context),
);
},
),
);
} }

View File

@ -5,9 +5,12 @@ import 'package:syncrow_web/utils/extension/build_context_x.dart';
import 'package:syncrow_web/utils/style.dart'; import 'package:syncrow_web/utils/style.dart';
class SidebarHeader extends StatelessWidget { class SidebarHeader extends StatelessWidget {
const SidebarHeader({required this.existingCommunityNames, super.key}); const SidebarHeader({
required this.onAddCommunity,
super.key,
});
final List<String> existingCommunityNames; final void Function() onAddCommunity;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -23,7 +26,9 @@ class SidebarHeader extends StatelessWidget {
color: ColorsManager.blackColor, color: ColorsManager.blackColor,
), ),
), ),
SidebarAddCommunityButton(existingCommunityNames: existingCommunityNames), SidebarAddCommunityButton(
onTap: onAddCommunity,
),
], ],
), ),
); );

View File

@ -8,6 +8,7 @@ import 'package:syncrow_web/pages/spaces_management/all_spaces/model/space_model
import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/community_tile.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/community_tile.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/sidebar_header.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/sidebar_header.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/space_tile_widget.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/space_tile_widget.dart';
import 'package:syncrow_web/pages/spaces_management/create_community/view/create_community_dialog.dart';
import 'package:syncrow_web/pages/spaces_management/structure_selector/bloc/center_body_bloc.dart'; import 'package:syncrow_web/pages/spaces_management/structure_selector/bloc/center_body_bloc.dart';
import 'package:syncrow_web/pages/spaces_management/structure_selector/bloc/center_body_event.dart'; import 'package:syncrow_web/pages/spaces_management/structure_selector/bloc/center_body_event.dart';
import 'package:syncrow_web/utils/style.dart'; import 'package:syncrow_web/utils/style.dart';
@ -94,10 +95,7 @@ class _SidebarWidgetState extends State<SidebarWidget> {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SidebarHeader( SidebarHeader(onAddCommunity: _onAddCommunity),
existingCommunityNames:
widget.communities.map((community) => community.name).toList(),
),
CustomSearchBar( CustomSearchBar(
onSearchChanged: (query) => setState(() => _searchQuery = query), onSearchChanged: (query) => setState(() => _searchQuery = query),
), ),
@ -179,4 +177,30 @@ class _SidebarWidgetState extends State<SidebarWidget> {
), ),
); );
} }
void _onAddCommunity() => _selectedId?.isNotEmpty ?? true
? _clearSelection()
: _showCreateCommunityDialog();
void _clearSelection() {
setState(() => _selectedId = '');
context.read<SpaceManagementBloc>().add(
NewCommunityEvent(communities: widget.communities),
);
}
void _showCreateCommunityDialog() {
showDialog<void>(
context: context,
builder: (context) => CreateCommunityDialog(
isEditMode: false,
existingCommunityNames: widget.communities.map((e) => e.name).toList(),
onCreateCommunity: (name, description) {
context.read<SpaceManagementBloc>().add(
CreateCommunityEvent(name, description, context),
);
},
),
);
}
} }