44 lines
1.0 KiB
Dart
44 lines
1.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:hub/shared/components/molecules/menu/index.dart';
|
|
|
|
enum EnumMenuItem {
|
|
button,
|
|
card,
|
|
tile;
|
|
|
|
MenuItem getInstance(final Function() action, final String title, final IconData icon) {
|
|
switch (this) {
|
|
case EnumMenuItem.button:
|
|
return ButtonMenuItem(action: action, title: title, icon: icon);
|
|
case EnumMenuItem.card:
|
|
return CardMenuItem(action: action, title: title, icon: icon);
|
|
case EnumMenuItem.tile:
|
|
return CardMenuItem(action: action, title: title, icon: icon);
|
|
}
|
|
}
|
|
}
|
|
|
|
abstract class MenuItem extends StatefulWidget {
|
|
const MenuItem({
|
|
super.key,
|
|
required this.action,
|
|
required this.title,
|
|
required this.icon,
|
|
});
|
|
|
|
final Function() action;
|
|
final String title;
|
|
final IconData icon;
|
|
|
|
|
|
factory MenuItem.create(
|
|
EnumMenuItem type, {
|
|
Key? key,
|
|
required Function() action,
|
|
required String title,
|
|
required IconData icon,
|
|
}) {
|
|
return type.getInstance(action, title, icon);
|
|
}
|
|
}
|