Lembar Kerja Peserta Didik (LKPD) - Ujian Tengah Semester (UTS)
Mata Pelajaran: Pemrograman Perangkat Bergerak (Flutter)
Tema: Aplikasi TCG Pokemon (Sprint 3)
Petunjuk Umum:
1. Kerjakan soal-soal di bawah ini dengan menggunakan framework Flutter.
2. Wajib menggunakan package berikut dalam merancang aplikasi:
- Provider untuk manajemen state (State Management).
- http untuk melakukan komunikasi request dengan API.
- go_router untuk navigasi (Routing) antar screen/halaman.
Soal 1: Fitur Pembelian Set (Pack) Pokemon
Buatkan tampilan di mana user dapat membeli set/pack Pokemon berdasarkan saldo yang dimiliki.
Ketentuan:
1. Tampilkan alert atau peringatan apabila jumlah saldo user tidak mencukupi untuk melakukan pembelian.
2. Integrasikan fitur pembelian dengan menggunakan API berikut:
- URL Endpoint API:
https://api-tcg-backend.vercel.app/api/store/buy-pack - Method HTTP:
POST
Catatan Penting: Pemanggilan request wajib menyertakan Bearer Token (Authorization Header).
Format body request yang perlu dikirimkan (dikirim sesuai set_id pokemon yang dipilih):
{
"set_id": "neo3"
}
Contoh response dari server apabila berhasil:
{
"kartu_didapat": [
{
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"card_id": "neo3-47",
"card_name": "Paras",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/47/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
},
{
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"card_id": "neo3-56",
"card_name": "Staryu",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/56/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
},
{
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"card_id": "neo3-55",
"card_name": "Snubbull",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/55/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
},
{
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"card_id": "neo3-12",
"card_name": "Porygon2",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/12/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
},
{
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"card_id": "neo3-49",
"card_name": "Qwilfish",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/49/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
}
],
"message": "Berhasil membeli pack dan mendapatkan kartu!",
"pack_dibeli": "Neo Revelation",
"sisa_saldo": 110000,
"transaction_id": ""
}
Tantangan Animasi: Setelah proses request pembelian berhasil, tampilkan kartu-kartu Pokemon yang didapatkan ke layar user, dan buatkan animasi (fade in, scale, dll) pada kartu-kartu tersebut agar tampilannya menjadi makin menarik.
Soal 2: Daftar Koleksi Kartu (My Card Collection)
Buatkan halaman My Card Collection untuk menampilkan daftar semua kartu yang pernah didapatkan atau dimiliki oleh user. Integrasikan halaman tersebut dengan API berikut:
- URL Endpoint API:
https://api-tcg-backend.vercel.app/api/pokemon/my-cards - Method HTTP:
GET
Catatan Penting: Pemanggilan request wajib menyertakan Bearer Token (Authorization Header).
Contoh response dari server:
{
"data": [
{
"id": "36a14a81-0b15-4fbf-a207-885594206941",
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"transaction_id": "d4d091bd-7d62-48b8-a9f0-ddeee5ac3cb4",
"card_id": "neo3-14",
"card_name": "Suicune",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/14/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
},
{
"id": "57613b64-4ccd-48bd-96ab-346b1d35636e",
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"transaction_id": "d4d091bd-7d62-48b8-a9f0-ddeee5ac3cb4",
"card_id": "neo3-12",
"card_name": "Porygon2",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/12/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
},
{
"id": "7caa1b9d-8c6a-4183-9550-ce923d00e7a1",
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"transaction_id": "d4d091bd-7d62-48b8-a9f0-ddeee5ac3cb4",
"card_id": "neo3-21",
"card_name": "Raichu",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/21/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
},
{
"id": "c4581401-c127-4d26-9699-6b21e800e5da",
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"transaction_id": "d4d091bd-7d62-48b8-a9f0-ddeee5ac3cb4",
"card_id": "neo3-61",
"card_name": "Healing Field",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/61/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
},
{
"id": "d0849a00-ad86-473d-a2f8-9d3af089a9d1",
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"transaction_id": "d4d091bd-7d62-48b8-a9f0-ddeee5ac3cb4",
"card_id": "neo3-8",
"card_name": "Houndoom",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/8/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
},
{
"id": "417cc3f6-570a-4b6d-a721-88929be26ceb",
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"card_id": "neo3-47",
"card_name": "Paras",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/47/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
},
{
"id": "cc5ca787-1ff3-4a74-a53e-56179bf519a2",
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"card_id": "neo3-56",
"card_name": "Staryu",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/56/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
},
{
"id": "d03db0bb-ed97-4ddd-8d80-299c05081578",
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"card_id": "neo3-55",
"card_name": "Snubbull",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/55/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
},
{
"id": "1e0d45cb-2821-4e7e-a199-10d079cdfdea",
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"card_id": "neo3-12",
"card_name": "Porygon2",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/12/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
},
{
"id": "43e0d383-9ffd-4270-84ef-a9a1253ef67d",
"user_id": "34801de5-f465-4fb0-b699-ff85d797233b",
"card_id": "neo3-49",
"card_name": "Qwilfish",
"image_url": "https://assets.tcgdex.net/en/neo/neo3/49/low.png",
"set_id": "neo3",
"acquired_at": "0001-01-01T00:00:00Z"
}
],
"message": "Berhasil mengambil koleksi kartu",
"total_kartu": 10
}