@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Padding(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
_buildMenu(),
...
],
),
),
),
);
}
Model 정의
class MenuEntry {
final String title;
final bool showArrow;
final Color? textColor;
final VoidCallback? onPressed;
MenuEntry({
required this.title,
required this.showArrow,
this.textColor,
this.onPressed,
});
}
Widget _buildMenu() {
return ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemCount: menuItems.length,
itemBuilder: (context, index) {
final item = menuItems[index];
return _buildMenuItem(
item.title, item.textColor, item.showArrow, item.onPressed);
},
separatorBuilder: (context, index) {
return const Divider(
thickness: 1,
color: Colors.gray
);
},
);
}