You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

94 lines
2.1 KiB

// Models/menu.dart
class Menu {
final int? id;
final String title;
final String icon;
final String route;
final int orderIndex;
final bool isActive;
final int? parentId;
Menu({
this.id,
required this.title,
required this.icon,
required this.route,
this.orderIndex = 0,
this.isActive = true,
this.parentId,
});
Map<String, dynamic> toMap() {
return {
'id': id,
'title': title,
'icon': icon,
'route': route,
'order_index': orderIndex,
'is_active': isActive ? 1 : 0,
'parent_id': parentId,
};
}
factory Menu.fromMap(Map<String, dynamic> map) {
return Menu(
id: map['id']?.toInt(),
title: map['title'] ?? '',
icon: map['icon'] ?? '',
route: map['route'] ?? '',
orderIndex: map['order_index']?.toInt() ?? 0,
isActive: (map['is_active'] ?? 1) == 1,
parentId: map['parent_id']?.toInt(),
);
}
Menu copyWith({
int? id,
String? title,
String? icon,
String? route,
int? orderIndex,
bool? isActive,
int? parentId,
}) {
return Menu(
id: id ?? this.id,
title: title ?? this.title,
icon: icon ?? this.icon,
route: route ?? this.route,
orderIndex: orderIndex ?? this.orderIndex,
isActive: isActive ?? this.isActive,
parentId: parentId ?? this.parentId,
);
}
@override
String toString() {
return 'Menu(id: $id, title: $title, icon: $icon, route: $route, orderIndex: $orderIndex, isActive: $isActive, parentId: $parentId)';
}
@override
bool operator ==(Object other) {
if (identical(this, other)) return true;
return other is Menu &&
other.id == id &&
other.title == title &&
other.icon == icon &&
other.route == route &&
other.orderIndex == orderIndex &&
other.isActive == isActive &&
other.parentId == parentId;
}
@override
int get hashCode {
return id.hashCode ^
title.hashCode ^
icon.hashCode ^
route.hashCode ^
orderIndex.hashCode ^
isActive.hashCode ^
parentId.hashCode;
}
}