Panduan Flutter

Panduan ini merupakan sebuah standar bagi Mobile Engineer DOT Indonesia atau vendor yang menggunakan Flutter. Untuk panduan secara komprehensif dapat mengikuti panduan Effective Dart.


1. Coding Standard

a. Hal-hal berikut ini seharusnya dimasukkan ke dalam list .gitignore dan tidak boleh di push ke dalam repository:

  • direktori build
  • file upload dari user
  • Informasi credential penting atau krusial

b. Variable atau method menggunakan format camelCase

c. Penamaan file menggunakan snake_case

d. Penamaan class menggunakan PascalCase

e. Gunakan penamaan variable atau method yang singkat & jelas, serta tidak membingungkan.

f. Gunakan fitur static analysis untuk code standard. Static analysis dapat diaktifkan dengan cara menambahkan file analysis_options.yaml di folder project. Rules yang ada dapat dikustomisasi sesuai kebutuhan. Untuk penjelasan lebih lengkapnya dapat diakses di sini

g. Untuk pengguna IDE Visual Studio Code, aktifkan fitur prettier dari plugin Flutter.

h. Usahakan naming, formatting, dan code structure selalu konsisten dan rapi. Kalau perlu, diskusikan terlebih dahulu dengan tim sebelum memulai project.

i. Gunakan state management seperti BloC atau yang lain sesuai dengan kebutuhan project.

j. Folder Structure

├── lib
│   ├── core
│   │   ├── blocs
│   │   │   ├── auth
│   │   │   │   ├── login_bloc.dart
│   │   ├── events
│   │   │   ├── auth
│   │   │   │   ├── login_event.dart
│   │   ├── models
│   │   │   ├── login_model.dart
│   │   ├── networks
│   │   │   ├── api_service.dart
│   │   ├── repositories
│   │   │   ├── auth_repository.dart
│   │   ├── routes
│   │   │   ├── app_route.dart
│   │   ├── states
│   │   │   ├── auth
│   │   │   │   ├── login_state.dart
│   ├── ui
│   │   ├── screens
│   │   │   ├── home
│   │   │   │   ├── home_screen.dart
│   │   │   ├── auth
│   │   │   │   ├── widgets
│   │   │   │   │   ├── email_input.dart
│   │   │   │   │   ├── password_input.dart
│   │   │   │   ├── login_screen.dart
│   │   ├── shared
│   │   │   ├── base_button.dart
│   │   │   ├── base_textfield.dart
│   │   │   ├── base_image_view.dart
│   │   │   ├── detail.blade.php
│   ├── utils
│   │   ├── app_helper.dart
│   │   ├── datepicker_helper.dart

2. Package & Libraries