initialized menu page

This commit is contained in:
Mohammad Salameh
2024-02-21 16:39:16 +03:00
parent d903849e92
commit c95a9c7817
9 changed files with 231 additions and 7 deletions
@@ -0,0 +1,43 @@
import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:syncrow_app/features/menu/model/menu_list_model.dart';
import 'package:syncrow_app/features/menu/view/widgets/menu_list_divider.dart';
import 'package:syncrow_app/features/menu/view/widgets/menu_list_item.dart';
import 'package:syncrow_app/features/shared_widgets/default_container.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';
class MenuList extends StatelessWidget {
const MenuList({
super.key,
required this.listModel,
});
final MenuListModel listModel;
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
BodySmall(
text: listModel.label!,
),
const Gap(5),
DefaultContainer(
child: ListView.separated(
shrinkWrap: true,
padding: const EdgeInsets.all(0),
physics: const NeverScrollableScrollPhysics(),
itemCount: listModel.listItems!.length,
itemBuilder: (context, index) {
return MenuListItem(
listItem: listModel.listItems![index]!,
);
},
separatorBuilder: (context, index) => const MenuListDivider()),
),
const Gap(5),
],
);
}
}
@@ -0,0 +1,17 @@
import 'package:flutter/material.dart';
class MenuListDivider extends StatelessWidget {
const MenuListDivider({
super.key,
});
@override
Widget build(BuildContext context) {
return Divider(
color: Colors.grey.withOpacity(0.5),
thickness: 1,
indent: 43,
endIndent: 10,
);
}
}
@@ -0,0 +1,43 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_app/features/menu/model/list_item_model.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_medium.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
class MenuListItem extends StatelessWidget {
const MenuListItem({
super.key,
required this.listItem,
});
final ListItemModel listItem;
@override
Widget build(BuildContext context) {
return Column(
children: [
Row(
children: [
Container(
margin: const EdgeInsets.only(right: 10),
height: 33,
width: 33,
decoration: BoxDecoration(
color: ColorsManager.primaryColor,
borderRadius: BorderRadius.circular(15),
),
child: listItem.icon != null
? SvgPicture.asset(
listItem.icon!,
)
: null,
),
BodyMedium(
text: listItem.label!,
)
],
),
],
);
}
}