using Align to keep the container stick with elemnts number (tested for many items)

This commit is contained in:
raf-dev1
2025-06-23 10:00:13 +03:00
parent e7efd2b3a1
commit 5989cdcfa0

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart'; import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart';
import 'package:syncrow_app/features/app_layout/model/community_model.dart';
import 'package:syncrow_app/features/menu/view/widgets/manage_home/home_settings.dart'; import 'package:syncrow_app/features/menu/view/widgets/manage_home/home_settings.dart';
import 'package:syncrow_app/features/shared_widgets/default_container.dart'; import 'package:syncrow_app/features/shared_widgets/default_container.dart';
import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart'; import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart';
@ -15,29 +16,37 @@ class ManageHomeView extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
var spaces = HomeCubit.getInstance().spaces; var spaces = HomeCubit.getInstance().spaces;
return DefaultScaffold( return DefaultScaffold(
title: 'Manage Your Home', title: 'Manage Your Home',
height: MediaQuery.sizeOf(context).height, child: Align(
alignment: Alignment.topCenter,
child: spaces.isEmpty child: spaces.isEmpty
? const Center( ? const Center(child: BodyMedium(text: 'No spaces found'))
child: BodyMedium(text: 'No spaces found'),
)
: DefaultContainer( : DefaultContainer(
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 25), padding:
const EdgeInsets.symmetric(horizontal: 20, vertical: 25),
child: ListView.builder( child: ListView.builder(
itemCount: spaces.length, shrinkWrap: true,
itemBuilder: (context, index) { itemCount: spaces.length,
if (index == spaces.length - 1) { itemBuilder: (context, index) {
return InkWell( final space = spaces[index];
onTap: () { return InkWell(
Navigator.of(context).push(CustomPageRoute( onTap: () {
builder: (context) => HomeSettingsView( Navigator.of(context).push(
space: spaces[index], CustomPageRoute(
))); builder: (context) =>
}, HomeSettingsView(space: space),
child: Row( ),
);
},
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
BodyMedium(text: StringHelpers.toTitleCase(spaces[index].name)), BodyMedium(
text: StringHelpers.toTitleCase(space.name)),
const Icon( const Icon(
Icons.arrow_forward_ios, Icons.arrow_forward_ios,
color: ColorsManager.greyColor, color: ColorsManager.greyColor,
@ -45,45 +54,19 @@ class ManageHomeView extends StatelessWidget {
) )
], ],
), ),
); if (index != spaces.length - 1)
}
return InkWell(
onTap: () {
//TODO refactor the routing to use named routes
// Navigator.of(context).pushNamed(
// '/home_settings',
// arguments: spaces[index],
// );
Navigator.of(context).push(CustomPageRoute(
builder: (context) => HomeSettingsView(
space: spaces[index],
)));
},
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
BodyMedium(text: HomeCubit.getInstance().spaces[index].name),
const Icon(
Icons.arrow_forward_ios,
color: ColorsManager.greyColor,
size: 15,
)
],
),
Container( Container(
margin: const EdgeInsets.symmetric(vertical: 15), margin: const EdgeInsets.symmetric(vertical: 15),
height: 1, height: 1,
color: ColorsManager.greyColor, color: ColorsManager.greyColor,
), ),
], ],
), ),
); );
}), },
)); ),
),
),
);
} }
} }