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
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;
|
|
}
|
|
}
|