88 lines
2.3 KiB
Dart
88 lines
2.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
class FarmingGuideModel {
|
|
final String id;
|
|
final String title;
|
|
final String content;
|
|
final String category;
|
|
final String? imageUrl;
|
|
final DateTime createdAt;
|
|
|
|
FarmingGuideModel({
|
|
required this.id,
|
|
required this.title,
|
|
required this.content,
|
|
required this.category,
|
|
this.imageUrl,
|
|
DateTime? createdAt,
|
|
}) : createdAt = createdAt ?? DateTime.now();
|
|
|
|
// Factory constructor untuk membuat model dari JSON/Map
|
|
factory FarmingGuideModel.fromMap(Map<String, dynamic> map) {
|
|
return FarmingGuideModel(
|
|
id: map['id'] ?? '',
|
|
title: map['title'] ?? 'Tanpa Judul',
|
|
content: map['content'] ?? '',
|
|
category: map['category'] ?? 'Umum',
|
|
imageUrl: map['image_url'],
|
|
createdAt:
|
|
map['created_at'] != null
|
|
? DateTime.parse(map['created_at'])
|
|
: DateTime.now(),
|
|
);
|
|
}
|
|
|
|
// Method untuk mengkonversi model ke JSON/Map
|
|
Map<String, dynamic> toMap() {
|
|
return {
|
|
'id': id,
|
|
'title': title,
|
|
'content': content,
|
|
'category': category,
|
|
'image_url': imageUrl,
|
|
'created_at': createdAt.toIso8601String(),
|
|
};
|
|
}
|
|
|
|
// Helper untuk mendapatkan warna berdasarkan kategori
|
|
Color getCategoryColor() {
|
|
switch (category.toLowerCase()) {
|
|
case 'tanaman pangan':
|
|
return const Color(0xFF4CAF50); // Green
|
|
case 'sayuran':
|
|
return const Color(0xFF8BC34A); // Light Green
|
|
case 'buah-buahan':
|
|
return const Color(0xFFFF9800); // Orange
|
|
case 'rempah':
|
|
return const Color(0xFF795548); // Brown
|
|
case 'kalender tanam':
|
|
return const Color(0xFF2196F3); // Blue
|
|
default:
|
|
return const Color(0xFF0F6848); // Default green
|
|
}
|
|
}
|
|
|
|
// Helper untuk mendapatkan icon berdasarkan kategori
|
|
IconData getCategoryIcon() {
|
|
switch (category.toLowerCase()) {
|
|
case 'tanaman pangan':
|
|
return Icons.grass;
|
|
case 'sayuran':
|
|
return Icons.eco;
|
|
case 'buah-buahan':
|
|
return Icons.local_florist;
|
|
case 'rempah':
|
|
return Icons.spa;
|
|
case 'kalender tanam':
|
|
return Icons.calendar_month;
|
|
default:
|
|
return Icons.menu_book;
|
|
}
|
|
}
|
|
|
|
// Helper untuk format tanggal
|
|
String getFormattedDate() {
|
|
return '${createdAt.day}/${createdAt.month}/${createdAt.year}';
|
|
}
|
|
}
|