├── FlutterRoadmap.md ├── README.md └── images └── flutter_roadmap.png /FlutterRoadmap.md: -------------------------------------------------------------------------------- 1 | # Highly Subjective Roadmap to Flutter Development 2 | 3 | 4 | ## Basics 5 | * **Dev Environment** 6 | * Android Studio or Visual Studio Code (Must have) 7 | * Flutter CLI (Nice to have) 8 | * Git (Nice to have) 9 | * DartPad (Optional) 10 | 11 | Choose either **Android Studio** or **VSC** and learn **shortcuts** and IDE **plugins**. A few hours spent on shortcuts will save you weeks later.It is useful to know Flutter CLI as some tasks are faster to get done from the command line. 12 | 13 | Create a habit to use a version control system the sooner the better. For today the most popular is Git. While you might look cool using command line, prefer **Fork**, **Sourcetree**, or Git client integrated into your **IDE**. 14 | 15 | * **Language** 16 | * Dart (Must have) 17 | * OOP (Nice to have) 18 | * Functional (Nice to have) 19 | * Code Style (Optional) 20 | 21 | It is important to follow code style, but if you’re completely new it might add frustration, so feel free to skip it for now, but get back to it later. “Effective Dart” manual is a way to go. Speaking of OOP and Functional - for now, keep it simple. No worries about monads or complex OOP patterns at this stage. 22 | 23 | ## Flutter 24 | * **Basic Widgets** 25 | * Material Widgets (Must have) 26 | * Material Design (Must have) 27 | * Cupertino Design (Nice to have) 28 | * Mobile HIG (Optional) 29 | 30 | Watch **Widget of the Week** on Youtube, explore material design concepts, get familiar with basic widgets Flutter shipping with. 31 | 32 | * **Core Design Patterns** (Must have) 33 | * Observer 34 | * Command 35 | * Dependency Injection 36 | * State 37 | * Composite 38 | * Factory 39 | * Builder 40 | * Decorator 41 | 42 | Design Patterns are building blocks for your future apps. They will help you understand not only more advanced approaches for the development but the framework itself. Moreover, they are universal and not relate to the framework or language, so studying them is a good investment for your future. The old **Gang of Four book** is a good start. 43 | 44 | * **Core Design Principles** 45 | * KISS (Must have) 46 | * DRY (Must have) 47 | * SOLID (Nice to have) 48 | 49 | KISS and DRY must be your tactical skills during software development, but SOLID principles are your strategic foundation. **Clean Code by Uncle Bob** will help you with all of them.Start using **Provider** or **get_it**. 50 | 51 | * **Networking** 52 | * RESTful API (Must have) 53 | * JSON (Must have) 54 | * TCP/IP Sockets (Optional) 55 | 56 | You need to understand how networking works and know all the magic in frontend-backend communication. Use code generation in production. 57 | 58 | **Chopper** and **json_serializable** are your best friends here. 59 | 60 | * **Simple Persistence** 61 | * Serializers (Must have) 62 | * Local storage (Must have) 63 | * Keychain (Optional) 64 | * Keystore (Optional) 65 | 66 | Almost every app needs to store some data. Almost every app doesn’t need big storage. Keep it simple and use basic persistence when it is enough. Consider using **localstorage** plugin or its alternatives. 67 | 68 | 69 | ## Getting Deeper 70 | * **Database** 71 | * SQLite (Must have) 72 | * Firebase (Must have) 73 | * Moor (Optional) 74 | * iCloud (Optional) 75 | 76 | When data storage becomes a problem - switch to more mature solutions, or even to the cloud. 77 | 78 | * **Architecture** (Must have) 79 | * Redux 80 | * MVC 81 | * Lifting State 82 | * MVVM 83 | 84 | It is fine to develop apps with a **Provider** as long as you follow some architectural agreements or patterns. You may want to switch to **Redux**, **MobX**, **BloC**, or other more architecture-aware patterns. 85 | 86 | * **Testing** 87 | * TDD (Must have) 88 | * BDD (Nice to have) 89 | 90 | There is only one way to write the app fast - write it right. I would recommend mastering the **TDD** approach first and then switch to the **BDD**. “**Test-Driven Development by Example**” by Kent Beck might help with this. Clean Code series from Uncle Bob has good coverage of the topic as well. 91 | 92 | * **Languages** (Optional) 93 | * Swift 94 | * Kotlin 95 | 96 | Learning native mobile development is beneficial for better platform understanding. At some point you’ll find that you need to fix an issue in a third-party library or to develop your own plugin. Start with the **Udacity course for Android** and **Stanford Course for iOS**. 97 | * **Dart** (Must have) 98 | * Concurrent 99 | * Reactive 100 | * Functional 101 | 102 | Now it is time to understand how async/await really works, what is monad, why stateless is beneficial. You may try **freezed** here. For deep understaning, a basic course on Closure or F# is recommended. 103 | 104 | * **Package Manager** 105 | * Pub (Must have) 106 | * Popular Plugins (Must have) 107 | * Maven (Optional) 108 | * CocoaPods (Optional) 109 | 110 | Create your own plugin. Too easy? Create a plugin with a native view. Still easy? Make it not to leak 🙂 111 | 112 | * **Profiling** 113 | * Leaks (Must have) 114 | * Allocations (Nice to have) 115 | * Performance (Nice to have) 116 | * Widgets (Nice to have) 117 | 118 | At least understand how to find memory leaks, but performance issues hunting is worth it as well. Start with a talk by **Filip Hráček** on **Flutter Europe** on Youtube. 119 | 120 | * **Flutter Internals** 121 | * Framework Architecture (Nice to have) 122 | * Dart VM (Optional) 123 | * RenderObjects (Optional) 124 | * Layouts (Optional) 125 | 126 | Get familiar with the framework architecture, and learn how it actually paints and layout your widgets. 127 | 128 | **Flutter's rendering pipeline** by Adam Barth and **Flutter's architecture** by Ian Hickson should be good for starting. 129 | 130 | 131 | ## Almost there 132 | 133 | * **Continuous Integration** 134 | * CI server (Must have) 135 | * Test Builds Distribution (Must have) 136 | * FastLane (Must have) 137 | * Code metrics (Optional) 138 | 139 | Never ever create production builds from the local dev folder. You may use Codemagic, Travis, GitHub Actions, Circle CI, or (in the worst scenario) register your dev machine as a CI node. Build the software development lifecycle, collect code coverage and other metrics. Read about **Danger**, **SonarQube**, but most importantly - **FastLane**. 140 | 141 | 142 | * **Analytics** 143 | * User Behavior Analytics (Must have) 144 | * Crash Logging (Must have) 145 | * A/B Testing (Optional) 146 | 147 | It is always a bad idea to ship builds without any analytics. Get yourself comfortable with **Firebase**, **MS App Center**, or any other service, which will give it at no time for free. 148 | 149 | 150 | * **Store** (Must have) 151 | * AppStore Guidelines 152 | * Google Play Guidelines 153 | * App Store Connect 154 | * Google Dev Console 155 | 156 | Before starting your mobile dev career you need to understand which apps are legal for shipping to the Stores. It is your responsibility to advise your clients regarding what is possible and what is not. 157 | 158 | ## The End 159 | 160 | Refer to for the latest version and links. 161 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Flutter Complete Roadmap 2 | 3 | ![roadmap](images/flutter_roadmap.png) 4 | 5 | #### Language 6 | * https://dart.dev/guides/language/language-tour 7 | * https://dart.dev/guides/language/effective-dart 8 | 9 | #### Basic Widgets 10 | * https://flutter.dev/docs/development/ui/widgets-intro 11 | * https://www.youtube.com/watch?v=b_sQ9bMltGU&list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG 12 | * http://material.io 13 | * https://developer.apple.com/design/ 14 | 15 | #### Core Design Patterns 16 | * https://en.wikipedia.org/wiki/Design_Patterns 17 | * https://www.youtube.com/watch?v=Wn-3UmXbEv8&list=PLR2qQy0Zxs_UysCZpV98LnZbloP10zxZe&ab_channel=Codepur 18 | 19 | #### Designing Helpers 20 | * https://www.youtube.com/c/flutterbucket 21 | * https://www.w3schools.com/graphics/svg_path.asp 22 | * https://medium.com/flutter-community/paths-in-flutter-a-visual-guide-6c906464dcd0 23 | 24 | 25 | 26 | #### Networking 27 | * https://en.wikipedia.org/wiki/Representational_state_transfer 28 | * https://pub.dev/packages/chopper 29 | * https://pub.dev/packages/json_serializable 30 | 31 | #### Simple Persistence 32 | * https://pub.dev/packages/localstorage 33 | * https://pub.dev/packages/flutter_keychain 34 | 35 | #### Database 36 | * https://pub.dev/packages/sqflite 37 | * https://pub.dev/packages/firebase 38 | * https://pub.dev/packages/moor 39 | * https://pub.dev/packages/hive 40 | 41 | #### Architecture 42 | * https://fluttersamples.com 43 | * https://pub.dev/packages/flutter_redux 44 | * https://pub.dev/packages/flutter_mobx 45 | * https://pub.dev/packages/flutter_bloc 46 | 47 | #### Testing 48 | * https://en.wikipedia.org/wiki/Test-driven_development 49 | * https://en.wikipedia.org/wiki/Behavior-driven_development 50 | * https://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530 51 | 52 | #### Languages 53 | * https://www.udacity.com/course/developing-android-apps-with-kotlin--ud9012 54 | * https://cs193p.sites.stanford.edu 55 | 56 | #### Dart 57 | * https://pub.dev/packages/freezed 58 | * https://fsharpforfunandprofit.com 59 | 60 | #### Package Manager 61 | * https://flutter.dev/docs/development/packages-and-plugins/developing-packages 62 | * https://cocoapods.org 63 | * https://maven.apache.org 64 | 65 | #### Profiling 66 | * https://flutter.dev/docs/perf/rendering/ui-performance 67 | * https://youtu.be/vVg9It7cOfY 68 | 69 | #### Flutter Internals 70 | * https://youtu.be/UUfXWzp0-DU 71 | * https://youtu.be/dkyY9WCGMi0 72 | * http://www.cs.cmu.edu/~bam/uicourse/830spring20/05-830-2020-03-23-Lecture-10-Flutter.mp4 73 | * https://mrale.ph/dartvm/ 74 | 75 | #### Continuous Integration 76 | * https://fastlane.tools 77 | * https://danger.systems 78 | * https://www.sonarqube.org 79 | * https://codemagic.io/ 80 | * https://travis-ci.org 81 | 82 | #### Analytics 83 | * https://firebase.google.com/docs/analytics 84 | * https://docs.microsoft.com/en-us/appcenter/analytics/ 85 | 86 | #### Store 87 | * https://developer.apple.com/app-store/review/guidelines/ 88 | * https://play.google.com/about/developer-content-policy/ 89 | * https://developer.android.com/distribute/best-practices/launch/launch-checklist 90 | 91 | ## Contribution 92 | Do not hesitate to add more useful links, or suggest changes to the roadmap. Opinions are highly appreciated! 93 | -------------------------------------------------------------------------------- /images/flutter_roadmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tusharhow/flutter-roadmap/e73e43834288b0072380ca7c77290786e6f5f8b8/images/flutter_roadmap.png --------------------------------------------------------------------------------