disini aku share step by step aku dalam mempelajari Flutter selama 1.5 bulan. Aku akan bagi menjadi 2 bagian, pertama Learn Dart
dan kedua Learn Flutter
Sebelum menyentuh Flutter, aku lebih menyarankan kalian untuk mempelajari Dart terlebih dahulu meskipun temen-temen udah berbekal pengetahuan basic programming atau bahkan OOP dari bahasa pemrograman lain. Tujuannya untuk membiasakan diri dengan syntax dart dan mengetahui utility yang ada di dart itu apa saja. Pada bagian Learn Dart
akan aku bagi menjadi 3 bagian yaitu Learn Basic Dart
, Learn Dart OOP
, dan Learn Advanced Dart
.
Aku pelajarin basic dart dengan baca dari official documentationnya disini dan coba-coba soal-soal coding test sederhana. Waktu itu aku baca semuanya tanpa terkecuali. Tapi ini yang paling penting untuk kalian pelajari dan latih:
- Variables (var, late, final, const, and null safety): https://dart.dev/language/variables
- Collections (List, Set, and Map): https://dart.dev/language/collections
- Function: https://dart.dev/language/functions
- Dart command-line tool: https://dart.dev/tools/dart-tool
- Latihan soal-soal dart: https://leetcode.com/problemset/all/ atau https://hackmd.io/@kuzmapetrovich/S1x90jWGP
Pada Dart terdapat beberapa tambahan konsep OOP dari OOP di Java. Aku menyarankan kalian membaca cepat konsep OOP yang mirip dengan OOP disebagian besar bahasa pemrograman seperti class, object, property, constructor, method, inheritance, polymorphism, static method, and enum. Tetapi ada beberapa point penting yang perlu kalian baca dan pelajari dengan detail:
- Constructor: https://dart-tutorial.com/object-oriented-programming/constructor-in-dart/
- Factory constructor: https://dart.dev/language/constructors#factory-constructors and https://medium.com/nerd-for-tech/factory-constructor-in-dart-part-1-1bbdf0d0f7f0
- Getters and Setters: https://dart.dev/language/methods#getters-and-setters
- extends (Polymorphism): https://dart-tutorial.com/object-oriented-programming/polymorphism-in-dart/
- Mixins: https://dart.dev/language/mixins
- implements (Interface): https://dart-tutorial.com/object-oriented-programming/interface-in-dart/
- Enhanced Enums: https://dart.dev/language/enums#declaring-enhanced-enums
- Generics: https://dart.dev/language/generics
- Latihan OOP Basic: https://www3.ntu.edu.sg/home/ehchua/programming/java/j3f_oopexercises.html (Ini Java tapi implement aja pake Dart)
- Latihan OOP dengan implement Algorithm & Data Structure: https://github.com/TheAlgorithms/Dart
Advanced Dart ini terdapat konsep yang penting untuk dipelajari sebelum kalian benar-benar terjun mempelajari Flutter. Konsep-konsep ini (terutama asynchronous
dan error handling
), akan sering kalian jumpai dalam membuat aplikasi dengan Flutter. Disini terbagi menjadi empat bagian:
- Asynchronous: https://dart.dev/codelabs/async-await
- Error Handling: https://dart.dev/language/error-handling
- Generators: https://www.geeksforgeeks.org/generators-in-dart/
- Dart Unit Test: https://dart.dev/guides/testing
Dengan asumsi kalian sudah mempelajari konsep-konsep dart yang sudah dijabarkan diatas dan familiar dengan syntax dart, selanjutnya kalian bisa memulai untuk belajar Flutter. Disini akan dijabarkan step by step mempelajari flutter dari 0 hingga Fetch API
di Flutter. Sebagai catatan, disini tidak memberikan kalian step by step kepada kalian hingga menjadi pro di Flutter. Tetapi setidaknya melalui penjabaran disini, dapat membantu kalian mempelajari Flutter secara berurutan hingga kalian bisa membuat aplikasi pertama kalian dengan Flutter. Pada bagian ini Learn Flutter
dibagi menjadi dua yaitu Flutter UI
dan Flutter Data Integration
.
Pada bagian ini kita lebih fokus mempelajari step by step dalam membuat UI di Flutter. Berawal dari pemahaman mengenai Widget, Layout, dan Navigation. Detail stepnya dijabarkan sebagai berikut:
- Run Counter App di Emulator dan Real Device: https://docs.flutter.dev/get-started/test-drive & https://stackoverflow.com/a/54526682/21317510
- Intro tentang Widget: https://docs.flutter.dev/ui/widgets-intro
- Stateless vs Stateful Widget: https://docs.flutter.dev/ui/interactive#stateful-and-stateless-widgets
- Styled Widget: https://docs.flutter.dev/ui/widgets/styling
- Custom Widget: https://www.geeksforgeeks.org/flutter-custom-widgets/
- About
pupbspec.yaml
: https://docs.flutter.dev/tools/pubspec - Menggunakan Asset di Flutter: https://docs.flutter.dev/ui/assets-and-images
- Layouting Flutter: https://docs.flutter.dev/ui/layout
- Constraints Flutter: https://docs.flutter.dev/ui/layout/constraints
- Buat 5 Screen Dari Aplikasi yang kalian suka
- Navigation Flutter: https://docs.flutter.dev/ui/navigation
- Sambungkan kelima screen menggunakan Navigation
Pada bagian ini kita lebih fokus pada integrasi data dengan UI yang sudah kita buat. Terutama dengan data dinamis yang bisa kita konsumsi melalui internet (API). Detail stepnya dijabarkan sebagai berikut:
- Dart & Flutter Packages: https://docs.flutter.dev/packages-and-plugins
- Network Request (Opsional untuk WebSocket): https://docs.flutter.dev/cookbook/networking
- Buat 2 Aplikasi yang menggunakan Network Request. Kalian bisa menggunakan data dari JSON Placeholder dan Poke API
- State Management (Saran saya pelajari Provider untuk memulai): https://docs.flutter.dev/data-and-backend/state-mgmt/simple
- Buat 1 Aplikasi yang kalian suka, berdasarkan permasalahan atau keresahan yang kalian rasakan
- Teruslah membuat sesuatu dan mempelajari sesuatu yang ada di Flutter. Semangat!