190 lines
6.8 KiB
Dart
190 lines
6.8 KiB
Dart
import '../presentation/components/assets/assets.gen.dart';
|
|
|
|
// Models
|
|
enum NewsCategory {
|
|
menu('Menu Baru'),
|
|
promo('Promo'),
|
|
event('Event'),
|
|
info('Info'),
|
|
tips('Tips');
|
|
|
|
const NewsCategory(this.label);
|
|
|
|
final String label;
|
|
}
|
|
|
|
class NewsArticle {
|
|
final String id;
|
|
final String title;
|
|
final String summary;
|
|
final NewsCategory category;
|
|
|
|
/// Path aset sampul; `null` memakai sampul warna kategori.
|
|
final String? coverImage;
|
|
final DateTime publishedAt;
|
|
final int readMinutes;
|
|
final String author;
|
|
final List<String> paragraphs;
|
|
final bool isHeadline;
|
|
|
|
const NewsArticle({
|
|
required this.id,
|
|
required this.title,
|
|
required this.summary,
|
|
required this.category,
|
|
required this.publishedAt,
|
|
required this.readMinutes,
|
|
required this.paragraphs,
|
|
this.coverImage,
|
|
this.author = 'Tim Enaklo',
|
|
this.isHeadline = false,
|
|
});
|
|
}
|
|
|
|
// Sample Data
|
|
DateTime _hoursAgo(int hours) =>
|
|
DateTime.now().subtract(Duration(hours: hours));
|
|
DateTime _daysAgo(int days) => DateTime.now().subtract(Duration(days: days));
|
|
|
|
/// Getter, bukan `final`, supaya perubahan data langsung terbaca saat hot
|
|
/// reload (variabel global yang sudah terisi tidak diisi ulang).
|
|
List<NewsArticle> get newsSamples => [
|
|
NewsArticle(
|
|
id: 'n1',
|
|
title: 'Sup Ikan Woku Kemangi, Menu Baru Andalan Woku Pedas',
|
|
summary:
|
|
'Kuah woku khas Manado dengan kemangi segar, hadir mulai minggu ini.',
|
|
category: NewsCategory.menu,
|
|
coverImage: Assets.images.woku.path,
|
|
publishedAt: _hoursAgo(3),
|
|
readMinutes: 3,
|
|
isHeadline: true,
|
|
paragraphs: [
|
|
'Woku Pedas menambah menu andalan baru: Sup Ikan Woku Kemangi. Ikan '
|
|
'segar dimasak dalam kuah bumbu woku, lalu ditaburi daun kemangi '
|
|
'tepat sebelum disajikan.',
|
|
'Level pedasnya bisa dipilih dari 1 sampai 5. Untuk yang baru pertama '
|
|
'mencoba, tim dapur menyarankan level 2 supaya aroma rempahnya tetap '
|
|
'terasa.',
|
|
'Menu ini tersedia untuk dine-in dan take away. Jangan lupa sebutkan '
|
|
'nomor HP akunmu ke kasir supaya EnakPoint dari pembelian ini masuk.',
|
|
],
|
|
),
|
|
NewsArticle(
|
|
id: 'n2',
|
|
title: 'Double EnakPoint Tiap Akhir Pekan, Begini Cara Dapatnya',
|
|
summary: 'Belanja Sabtu dan Minggu di outlet mana pun dapat EnakPoint 2x.',
|
|
category: NewsCategory.promo,
|
|
publishedAt: _hoursAgo(20),
|
|
readMinutes: 2,
|
|
paragraphs: [
|
|
'Selama bulan ini, setiap belanja pada hari Sabtu dan Minggu mendapat '
|
|
'EnakPoint dua kali lipat dari biasanya, di semua outlet.',
|
|
'Tidak perlu klaim. Cukup sebutkan nomor HP akunmu ke kasir sebelum '
|
|
'membayar, dan EnakPoint 2x masuk otomatis setelah pesanan lunas.',
|
|
'Bonus maksimal 5.000 EnakPoint per transaksi. Detail lengkap dan promo '
|
|
'lainnya bisa kamu cek di EnakPromo.',
|
|
],
|
|
),
|
|
NewsArticle(
|
|
id: 'n3',
|
|
title: 'Tumulu Coffee Kini Buka Lebih Pagi, Mulai Pukul 07.00',
|
|
summary: 'Ngopi sebelum berangkat kerja sekarang bisa langsung di Tumulu.',
|
|
category: NewsCategory.info,
|
|
coverImage: Assets.images.tumulu.path,
|
|
publishedAt: _daysAgo(1),
|
|
readMinutes: 2,
|
|
paragraphs: [
|
|
'Mulai minggu ini Tumulu Coffee buka pukul 07.00, satu jam lebih pagi '
|
|
'dari sebelumnya. Jam tutup tetap pukul 22.00.',
|
|
'Selama jam 07.00 sampai 09.00, tersedia paket sarapan kopi susu dan '
|
|
'roti bakar untuk kamu yang terburu-buru.',
|
|
],
|
|
),
|
|
NewsArticle(
|
|
id: 'n4',
|
|
title: 'Ramen Night di Ramenmulu, Sabtu Ini',
|
|
summary: 'Nonton bareng, live akustik, dan ramen edisi terbatas.',
|
|
category: NewsCategory.event,
|
|
coverImage: Assets.images.ramenmulu.path,
|
|
publishedAt: _daysAgo(2),
|
|
readMinutes: 3,
|
|
paragraphs: [
|
|
'Ramenmulu menggelar Ramen Night hari Sabtu mulai pukul 18.00. Ada '
|
|
'nonton bareng, live musik akustik, dan ramen kuah miso edisi '
|
|
'terbatas.',
|
|
'Tempat duduk terbatas dan tidak bisa dipesan lebih dulu, jadi datang '
|
|
'lebih awal supaya kebagian meja.',
|
|
'Anggota komunitas Ramen Lovers di EnakCommunity sudah ramai membahas '
|
|
'acara ini. Yuk ikut gabung obrolannya.',
|
|
],
|
|
),
|
|
NewsArticle(
|
|
id: 'n5',
|
|
title: 'Cheesecake Karamel Jadi Dessert Baru di Tumulu Coffee',
|
|
summary: 'Lembut, tidak terlalu manis, dan pas ditemani kopi hitam.',
|
|
category: NewsCategory.menu,
|
|
coverImage: Assets.images.onboarding2.path,
|
|
publishedAt: _daysAgo(4),
|
|
readMinutes: 2,
|
|
paragraphs: [
|
|
'Tumulu Coffee menghadirkan dessert baru: Cheesecake Karamel. Lapisan '
|
|
'keju yang lembut dipadukan dengan saus karamel dan remahan biskuit '
|
|
'cokelat.',
|
|
'Rasa manisnya dibuat ringan supaya cocok dinikmati bersama kopi hitam '
|
|
'atau americano.',
|
|
],
|
|
),
|
|
NewsArticle(
|
|
id: 'n6',
|
|
title: 'Cara Tukar EnakPoint ke Voucher',
|
|
summary:
|
|
'Pilih voucher di EnakReward, masukkan PIN, lalu tunjukkan ke kasir.',
|
|
category: NewsCategory.tips,
|
|
publishedAt: _daysAgo(5),
|
|
readMinutes: 3,
|
|
paragraphs: [
|
|
'EnakPoint kamu bisa ditukar dengan voucher, misalnya menu gratis atau '
|
|
'potongan belanja. Buka menu EnakReward untuk melihat voucher yang '
|
|
'tersedia.',
|
|
'Pilih voucher, tekan Tukar, lalu masukkan PIN kamu. Penukaran tidak '
|
|
'bisa dibatalkan.',
|
|
'Voucher yang sudah ditukar ada di tab Voucher saya. Tunjukkan layar '
|
|
'voucher atau kodenya ke kasir saat memesan.',
|
|
'PIN hanya dimasukkan di aplikasi, tidak pernah di mesin kasir. Jangan '
|
|
'berikan PIN kamu kepada siapa pun, termasuk petugas outlet.',
|
|
],
|
|
),
|
|
NewsArticle(
|
|
id: 'n7',
|
|
title: 'EnakPoint Bisa Kedaluwarsa, Begini Cara Mengeceknya',
|
|
summary: 'Pakai saldo sebelum hangus. Cek tanggalnya di halaman EnakPoint.',
|
|
category: NewsCategory.tips,
|
|
publishedAt: _daysAgo(6),
|
|
readMinutes: 2,
|
|
paragraphs: [
|
|
'Outlet bisa mengatur masa berlaku untuk EnakPoint dan EnakCoin. Saldo '
|
|
'yang sudah lewat masa berlakunya akan hangus.',
|
|
'Buka halaman EnakPoint & EnakCoin untuk melihat saldo terdekat yang '
|
|
'akan kedaluwarsa, lengkap dengan tanggalnya.',
|
|
'Tanggal kedaluwarsa berarti saldo masih bisa dipakai sampai pukul '
|
|
'23.59 WIB pada tanggal tersebut.',
|
|
],
|
|
),
|
|
NewsArticle(
|
|
id: 'n8',
|
|
title: 'Bakso 343 Rayakan Ulang Tahun ke-5',
|
|
summary: 'Lima tahun menemani makan siang, ada kejutan untuk pelanggan.',
|
|
category: NewsCategory.event,
|
|
coverImage: Assets.images.bakso343.path,
|
|
publishedAt: _daysAgo(9),
|
|
readMinutes: 2,
|
|
paragraphs: [
|
|
'Bakso 343 genap berusia lima tahun. Berawal dari satu gerobak, kini '
|
|
'jadi salah satu tenant favorit di Enaklo.',
|
|
'Selama pekan ulang tahun, setiap pelanggan yang makan di tempat '
|
|
'mendapat es teh gratis selama persediaan masih ada.',
|
|
],
|
|
),
|
|
];
|