Permintaan
Dalam 3 hari, bikin aplikasi inventory sebagai berikut:
- pencatatan keluar masuk barang beserta harga per qty
- setiap barang diberi kategori untuk filter by kategori
- keluar masuk barang diberi keterangan timestamp (baik barang masuk maupun barang keluar) untuk keperluan filter by date
- setiap barang mempunyai harga jual dan harga beli
- buat form khusus untuk menambahkan dan mengurangi item
- untuk case mengurangi item diberikan pilihan (bukan inputan bebas) alasan barang keluar contoh: sold, expire, broken
- Tambahkan filter by case no 6
- Buat edit dan hapus barang
- Buat hasil rekap laporan per minggu (format bebas)
- Case authentication :
- cashier hanya dapat mengurangi barang
- admin gudang hanya dapat menambahkan dan mengurangi barang
- super admin dapat semua akses
Rancangan Latihan dari Mudah ke Sulit
Diagram
Flutter App <—> NodeJS Restful API <—> MySQL Database
or
+————-+ HTTP Request/Response +————————-+ SQL Query/Result +————-+
| Flutter App | <——————————> | NodeJs Express Restful | <————————-> | MySQL DB |
| | | API | | |
+————-+ +————————-+ +————-+
or
NodeJs Express
Restful API
Alur Pembelajaran
- Membuat halaman di flutter.
- Memisah halaman dengan app.
- Membuat halaman login tanpa kredensial.
- Membuat halaman logout.
- Membuat database dan tabel.
- Mempopulasikan tabel barang secara acak.
- Mempopulasikan tabel pengguna dengan super admin.
- Membuat koneksi server ke database.
- Membuat API yang dapat mengambil data tabel.
- Membuat koneksi HTTP dari flutter ke API.
- Mengambil data dari API ke flutter.
- Memodifikasi halaman login untuk login dengan super admin.
- Membuat halaman mendaftar pengguna baru.
- Membuat halaman tampilan daftar pengguna oleh super admin.
- Membuat tombol refresh pada halaman daftar pengguna untuk menampilkan data baru.
- Membuat tombol refresh pada halaman depan untuk menampilkan data baru.
- Halaman tersebut dapat memberikan peran pengguna oleh super admin.
- Memisahkan halaman depan antara super admin dan pengguna tanpa peran.
- Membuat halaman super admin agar dapat menambahkan barang melalui API ke database.
- Membuat halaman super admin agar dapat memodifikasi data masing-masing barang.
- Halaman modifikasi barang dipecah menjadi halaman modifikasi super admin dan logistik.
- Halaman modifikasi masing-masing barang super admin ditambah tombol hapus barang.
- Pemisahan halaman super admin, logistik, dan cashier.
- Halaman cashier tidak dapat menambah dan memodifikasi barang tetapi menjual barang.
- Membuat halaman jual untuk memberi harga dan keterangan jual barang yang dipilih.
- Membuat fitur expor ke json, csv, xml, dll, pada semua halaman depan.
- Membuat fitur sorting pada semua halaman depan.
- Membuat fitur filter pada semua halaman depan.
- Mempercantik tampilan.
Realisasi
Source Code: https://github.com/0fajarpurnama0/Programming-Practice/tree/ab03df42af19caafbd76faa521d318537c541d58/Flutter/flutter_belajar_aplikasi_pengarsipan
Tutorial rinci untuk pembelajaran menyusul.
Membuat halaman di flutter.
lib/main.dart
Memisah halaman dengan app.
lib/main.dart
lib/HomePage.dart
Membuat halaman login tanpa kredensial.
lib/main.dart
lib/LoginPage.dart
Membuat halaman logout.
lib/HomePage.dart
Membuat database dan tabel.
Disini menggunakan mysql.
Mempopulasikan tabel barang secara acak.
Membuat tabel pengguna dan mempopulasikannya dengan super admin.
Membuat koneksi server ke database.
Disini server menggunakan NodeJs Express
db.js
app.js
Jika berhasil, di browser silahkan coba buka localhost:3000/test-db.
Membuat API yang dapat mengambil data tabel.
Mengambil Tabel Barang
app.js
Membuat koneksi HTTP dari flutter ke API.
Melihat status koneksi di debug console
lib/HomePage.dart
Merubah keadaan halaman depan untuk menampilkan status koneksi
lib/HomePage.dart
Mengambil data dari API ke flutter.
Mengambil data
lib/HomePage.dart
Membagi masing-masing barang dalam baris
lib/HomePage.dart
Merapikan tampilan data dalam bentuk listview
lib/HomePage.dart
Memodifikasi halaman login untuk login dengan super admin.
app.js
lib/LoginPage.dart
Membuat halaman mendaftar pengguna baru.
lib/LoginPage.dart
lib/RegistrationPage.dart
app.js
Membuat halaman tampilan daftar pengguna oleh super admin.
Duplikasi logika HomePage ke UsersPage
app.js
lib/LoginPage.dart
lib/UsersPage.dart
Halaman tersebut dapat memberikan peran pengguna oleh super admin.
Menambah field baru untuk peran pengguna
Halaman pengguna hanya dapat diakses dengan role superadmin
app.js
lib/LoginPage.dart
Menambah pemilihan peran pada halaman daftar pengguna
lib/UsersPage.dart
lib/EditUserPage.dart
app.js
Menambah filter halaman depan.
Menambah filter berdasarkan kategori.
lib/HomePage.dart
Menambah filter berdasarkan keterangan keranjang.
lib/HomePage.dart
Menambah sorting halaman depan.
Menambah sort berdasarkan harga masuk.
lib/HomePage.dart
Menambah sort berdasarkan harga keluar.
lib/HomePage.dart
Menambah export halaman depan.
Export ke json
lib/HomePage.dart
lib/HomePageExport.dart
Export ke xml
lib/HomePage.dart
lib/HomePageExport.dart
Export ke csv
lib/HomePage.dart
Export ke pdf
lib/HomePage.dart
Membuat halaman guest duplikasi dari homepage saat ini.
lib/LoginPage.dart
lib/GuestPage.dart
Membuat halaman cashier untuk memasukan barang ke keranjang.
lib/LoginPage.dart
Pewarisan dari HomePage belum berhasil, sehingga kelas sendiri untuk sementara.
lib/CashierPage.dart
lib/CartPage.dart
app.js
Membuat halaman logistic agar dapat menambahkan dan edit barang melalui API ke database.
lib/LoginPage.dart
lib/LogisticPage.dart
lib/AddItemPage.dart
app.js
Halaman Admin
lib/LoginPage.dart
Halaman Depan Admin Ditambah Fungsi Logistic
lib/AdminPage.dart
Halaman Depan Admin Fungsi Cashier
lib/AdminPage.dart
Halaman Depan Admin Fungsi Hapus pada Edit Barang
lib/AdminPage.dart
lib/AdminEditPage.dart
app.js
Mempercantik tampilan.
Menyusul
Acknowledgement
Not only created but tutored step by step by Blackbox AI.