67 lines
2.2 KiB
Dart
67 lines
2.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:gap/gap.dart';
|
|
import 'package:google_fonts/google_fonts.dart';
|
|
|
|
class MenuWidget extends StatelessWidget {
|
|
final String text;
|
|
final IconData? icon;
|
|
final VoidCallback? onPressed;
|
|
final String? color;
|
|
|
|
final Color green = const Color.fromRGBO(58, 236, 27, 0.2);
|
|
final Color blue = const Color.fromRGBO(27, 90, 236, 0.2);
|
|
final Color red = const Color.fromRGBO(236, 27, 27, 0.2);
|
|
final Color yellow = const Color.fromRGBO(236, 232, 27, 0.2);
|
|
final Color teal = const Color.fromRGBO(27, 236, 229, 0.2);
|
|
|
|
const MenuWidget({super.key, required this.text, this.icon, this.onPressed, this.color});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return GestureDetector(
|
|
onTap: onPressed,
|
|
child: Container(
|
|
width: MediaQuery.of(context).size.width - 96,
|
|
padding: const EdgeInsets.only(top: 16, bottom: 16),
|
|
decoration: BoxDecoration(
|
|
borderRadius: BorderRadius.circular(8),
|
|
border: Border.all(
|
|
color: color != null ? _getColorBasedOnString(color ?? '') : const Color.fromRGBO(255, 255, 255, 0.6),
|
|
width: 2),
|
|
color: color != null ? _getColorBasedOnString(color ?? '') : const Color.fromRGBO(0, 0, 0, 0),
|
|
),
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
children: [
|
|
const Gap(32),
|
|
Icon(icon, size: 24, color: const Color.fromRGBO(255, 255, 255, 1)),
|
|
const Gap(64),
|
|
Text(
|
|
text,
|
|
style: GoogleFonts.outfit(
|
|
color: const Color.fromRGBO(255, 255, 255, 1),
|
|
textStyle: const TextStyle(fontSize: 16, fontWeight: FontWeight.w500)),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
Color _getColorBasedOnString(String color) {
|
|
switch (color.toLowerCase()) {
|
|
case 'green':
|
|
return green;
|
|
case 'blue':
|
|
return blue;
|
|
case 'red':
|
|
return red;
|
|
case 'yellow':
|
|
return yellow;
|
|
case 'teal':
|
|
return teal;
|
|
default:
|
|
return const Color.fromRGBO(0, 0, 0, 0); // Default to transparent if color is not recognized
|
|
}
|
|
}
|
|
}
|