This template represents a step-by-step Dart/Flutter learning course, covering fundamental concepts and many common practical idioms, required for advanced cross-platform UI application development.
- Flutter SDK for building and running Flutter applications.
- Dart SDK for running Dart (usually comes bundled with Flutter SDK, though may be installed separately).
- VS Code + Flutter Extension or Android Studio/IntelliJ IDEA + Flutter plugin as your IDE (or any other on your choice).
- Flutter for Android developers.
- Intro to Dart for Java Developers codelab.
- Flutter for SwiftUI Developers.
- Flutter for UIKit developers.
- Flutter for React Native developers.
- Flutter for web developers.
- Flutter for Xamarin.Forms developers.
- Dart API documentation and Flutter API documentation.
- Effective Dart describing common Dart code style and guidelines.
- Flutter Cookbook demonstrates how to solve common Flutter problems.
- Dart Cheatsheet for quick reference.
- Books about Dart and Books about Flutter lists.
- Official Flutter YouTube channel, covering many Flutter and Dart concepts as well as their short Flutter Widget of the Week and Flutter Package of the Week regular explanatory videos.
- pub.dev contains all the official and community made Flutter and Dart packages, gradually extending the codebase.
- Flutter Gems is a list of useful Dart and Flutter packages, categorized basing on functionality.
- Awesome Flutter is a curated list of Flutter code and resources.
- dartpad allows to explore and run Dart and Flutter code right in your browser.
- Create a new GitHub repository for yourself using this one as template.
- Invite as a collaborator of your repository the person you want to review your steps (mentor or lead).
NOTE: This learning course is constantly improving and evolving over time.
To be up-to-date with the recent changes in your own copy of this repository, attach the upstream history with the following commands:
git remote add upstream https://github.com/team113/flutter-incubator.git git fetch upstream main git merge upstream/main --allow-unrelated-historiesAnd then, whenever you want to grab some new changes, do the following:
git fetch upstream main git merge upstream/mainAdditionally, to be aware about new changes, you may either watch this repository on GitHub, or even track it via RSS subscription.
Each step must be performed as a separate PR (pull request) with the appropriate name, and checkmarked here, in README's schedule, after its completion. Consider to use dart format
/flutter format
and dart analyze
/flutter analyze
when you're writing Dart code.
Each step has the estimated time for completion. If any deeper investigation on step's theme is needed by you, then it's on your own.
Do not hesitate to ask your mentor/lead with questions, however you won't receive any concrete answer, but rather a direction for your own investigation. Mentor/Lead is the one who asks questions here, demanding concrete and complete answers.
- 0. Become familiar with Dart basics (1 day)
- 1. Dart concepts (1 day)
- 1.1. Mixins and extensions (1 day)
- 1.2. Async and isolates (1 day)
- 1.3. Generics (1 day)
- 1.4. Conditional compilation (1 day)
- 2. Dart idioms (1 day)
- 2.1. Rich types ensure correctness (1 day)
- 2.2. Named and factory constructor (1 day)
- 2.3. SOLID
- 3. Dart ecosystem (1 day)
- 3.1. Serialization and deserialization (1 day)
- 3.6. Code generation (1 day)
Inspired by Rust Incubator.