List Task
Sip, jadi fokus dulu ke Flutter side. Kalau tujuannya bikin starter kit, fitur awal jangan terlalu banyak, tapi harus fundamental supaya developer lain bisa extend dengan mudah. Aku buatkan daftar feature Flutter Starter Kit yang wajib + opsional biar jelas roadmap kamu dan temanmu.
π Daftar Feature Flutter Starter Kit
1. π Authentication Moduleβ
Feature inti yang hampir semua aplikasi butuh.
- Register (Form validation client + server).
- Login (Email/username + password).
- Logout (Clear token, call API logout).
- Refresh Token (kalau pakai JWT).
- Profile (Me) β get user info dari server.
- State Management Auth (authenticated vs unauthenticated flow).
2. π§Ύ Common Infrastructureβ
Pondasi yang dipakai semua fitur.
- API Client (Dio/Chopper) dengan interceptor untuk auth token.
- Error Handling (Failure model) β mapping
server / validation / connection / unknown
. - ResponseModel generic (data, meta, permissions, errors).
- Form Validation System (client-side + server-side).
- Dependency Injection dengan
injectable + get_it
. - State Management dengan
bloc + freezed
. - SecureStorage / SharedPref untuk token & settings.
- Router (GoRouter / AutoRoute) untuk protected routes.
3. π¨ UI Essentialsβ
Supaya developer cepat bikin tampilan dasar.
- Theme + Dark Mode support.
- Custom Widgets: Button, InputField, Snackbar, Loading, EmptyState.
- FormBuilder Wrapper (field + server error integration).
- Generic List + Pagination (infinity scroll / load more).
- Permission-based UI (hide/show button sesuai permissions dari API).
4. π Feature Example Modulesβ
Modul contoh biar developer ngerti alur (mirip Laravel punya
User
resource).
- User Management (contoh CRUD)
- List users (with pagination).
- Create user (form validation).
- Edit user.
- Delete user.
- Settings/Profile (update password, update profile).
5. π§ͺ Testing & Dev Toolsβ
Supaya starter kit profesional & siap dipakai tim.
- Unit Test UseCase.
- Bloc Test (auth & register bloc).
- Widget Test (form validation).
- Mason Brick Flutter Feature (auto-generate folder + file untuk feature baru).
6. π Nice-to-Have (Opsional, bisa belakangan)β
- Localization (multi-language).
- Notification (FCM setup).
- Offline-first support (Hive/Drift).
- Error Logger (Sentry/Crashlytics).
- Theming system (easy color/font switch).
π Jadi kalau diprioritaskan:
- Auth dulu (supaya bisa login/logout).
- Infrastructure (Failure, ResponseModel, API client, DI).
- UI Essentials (Form, Validation, Generic List).
- Example CRUD (User Management) β biar developer ngerti pattern.
analysis_options.yaml
linter:
rules:
prefer_relative_imports: true
Prologue
Ini hanyalah starter kit yang saya buat untuk diri saya sendiri. Dimana saya sering mengerjakan project Flutter
dengan backend Laravel
, karena itulah saya membuat ini untuk membantu saya dalam membuat aplikasi flutter dengan mudah tanpa harus setup banyak hal.
π‘ Idea Saya ingin membawa fitur bagus pada laravel ke dalam flutter.
Catatanβ
- Saya masih bingung dimana saya harus meletakan middleware pada flutter, soalnya bisa dibuat pada
go_route
,bloc
. - Saya masih bingung juga dimana saya harus meletakan
exception
karena API ada beberapaexception
yang perlu di handle. - Saya masih bingung membuat
Validation Rules
yang tepat untukForm
, karena saya inginnya beberapa validasi dijalankan disisi client terlebih dahulu sebelum dikirim ke server (walaupun server pasti ada validasi juga), ini supaya kita tidak membebani server. - Saya masih bingung membuat api yang sesuai untuk
Policy/Gate
alias authorization yang bagus.
Packageβ
-
Environment Variable
flutter_dotenv
-
State Management
flutter_bloc
provider
-
Dependency Injection
injectable
get_it
-
Navigation Router
go_router
-
Utility/Tools/Helper
freezed_annotation json_annotation
build_runner freezed json_serializableβ --dev
rxdart
- `fpdartβ
path
connectivity_plus
logger
-
Internationalization
intl
-
Image
image_cropper
image_picker
cached_network_image
-
Local Storage
Untuk data yang bentuknya masa lampau bisa disimpan pada local storage karena tidak akan pernah berubah.shared_preferences
flutter_secure_storage
-
HTTP Client
http
dio
-
File
path_provider
file_picker
open_file
-
UI Widget
flutter_form_builder
form_builder_validator
form_builder_extra_fields
salomon_bottom_bar
-
Unique ID (Optional)
ulid
Struktur Directoryβ
lib/
βββ core/
β βββ constants/
β βββ enums/
β βββ errors/
β βββ extensions/
β βββ utils/
β βββ config/
β βββ lang/
βββ data/
β βββ datasources/
β β βββ local/
β β βββ remote/
β βββ models/
β βββ repositories_impl/
βββ domain/
β βββ entities/
β βββ repositories/
β βββ usecases/
βββ presentation/
β βββ blocs/
β βββ pages/
β β βββ auth/
β β βββ home/
β β βββ errors/
β βββ widgets/
β βββ router/
βββ main.dart
Request Lifecycleβ
git clone https://github.com/lyrihkaesa/flutter_starter_kit.git nama-project
cd nama-project
git remote -v
git remote set-url origin ssh:repository-remote-kamu
git remote -v
ssh -T [email protected]
- Welcome to GitLab, @kaesalyrih
- [email protected]: Permission denied (publickey).
- Buat ssh dilocal
- Copy ssh kamu misal adadada.pub ke gitlab
- gitlab.com/-/user_settings/ssh_keys
- Lalu copy ssh pub disana
ssh -T [email protected]
git fetch origin --prune
git push origin --all
Seharusnya sudah ada di remote repository.
fvm list
fvm use 3.32.5
- Restart VSCode
CTRL + SHIFT + P
>Developer: Reload Window
fvm flutter pub get
cp .env.example .env
Menghapus folder android
, ios
, web
rm -rf ios android web
- Powershell
Remove-Item -Recurse -Force ios, android, web
Membuat project flutter android
, ios
, web
dengan org baru
fvm flutter create --org id.my.charapon --platforms android,ios,web -a kotlin -i swift .
fvm flutter create --org id.my.charapon --platforms android,ios,web --android-language kotlin --ios-language swift .
Terus jalankan projectnya.
fvm flutter // menggunakan flutter version yang global
flutter // menggunakan flutter version yang local
$ fvm use 3.32.5
Flutter SDK: SDK Version : 3.32.5 is not installed.
β Would you like to install it now? Β· yes
β Flutter SDK: SDK Version : 3.32.5 installed! (87.8s)
No pubspec.yaml detected in this directory
β Would you like to continue? Β· yes
Setting up Flutter SDK: 3.32.5
Checking Dart SDK version...
Downloading Dart SDK from Flutter engine ...
Expanding downloaded archive with 7z...
Building flutter tool...
Running pub upgrade...
Resolving dependencies... (10.3s)
Downloading packages... (51.5s)
Got dependencies.
Flutter 3.32.5 β’ channel stable β’ https://github.com/flutter/flutter.git
Framework β’ revision fcf2c11572 (7 weeks ago) β’ 2025-06-24 11:44:07 -0700
Engine β’ revision dd93de6fb1 (7 weeks ago) β’ 2025-06-24 07:39:37 -0700
Tools β’ Dart 3.8.1 β’ DevTools 2.45.1
β Flutter SDK: SDK Version : 3.32.5 is setup
Skipping "pub get" because no pubspec.yaml found.
β Requires administrator priviledges to run this command.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β You don't have the required priviledges to run this command. β
β Try running with sudo or administrator priviledges. β
β If you are on Windows, you can turn on developer mode: https://bit.ly/3vxRr2M β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Windows
Settings
>Update & Security
>For developers
> Enable/On βDeveloper Mode
$ fvm use 3.32.5
Skipping "pub get" because no pubspec.yaml found.
β Project now uses Flutter SDK : SDK Version : 3.32.5
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Running on VsCode, please restart the terminal to apply changes β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
You can then use "flutter" command within the VsCode terminal.