Complete Flutter and Dart Roadmap 2020

DART ROADMAP

- Basics
- Arrays, Maps
- Classes
- Play On Dart Compiler
- String Interpolation
VARIABLES
- var
- dynamic
- int
- String
- double
- bool
- runes
- symbols
FINAL AND CONST
- differences
- const value and const variable
NUMBERS
- hex
- exponent
- parse methods
- num methods
- math library
STRINGS
- methods
- interpolation
- multi-line string
- raw string
LISTS
- List (Fixed and Growable)
- methods
MAPS
- Map (Fixed and Growable)
- methods
SETS
- Set ((Fixed and Growable)
- methods
FUNCTIONS
- Function as a variabl
- optional and required parameters
- fat arrow
- named parameters
- @required keyword
- positional parameters
- default parameter values
- Function as first-class objects
- Anonymous functions
- lexical scopes
- Lexical closures
OPERATORS
- unary postfix expr++ expr — () [] . ?.
- unary prefix -expr !expr ~expr ++expr — expr await expr
- multiplicative * / % ~/
- additive + -
- shift << >> >>>
- bitwise AND &
- bitwise XOR ^
- bitwise OR |
- relational and type test >= > <= < as is is!
- equality == !=
- logical AND &&
- logical OR ||
- if null ??
- conditional expr1 ? expr2 : expr3
- cascade ..
- assignment = *= /= += -= &= ^= etc.
CONTROL FLOW STATEMENTS
- if and else
- for loops
- while and do-while
- break and continue
- switch and case
- assert
EXCEPTIONS (ALL ARE UNCHECKED)
- Throw
- Catch
- on
- rethrow
- finally
CLASSES
- Class members
- Constructors
- Getting object type
- instance variables
- getters and setters
- Named constructors
- Initializer lists
- Constant constructors
- Redirecting constructors
- Factory constructors
- instance methods
- abstract methods
- abstract classes
- Inheritance
- Overriding
- Overriding operators
- noSuchMethod()
- Extension methods
- Enums
- Mixins (on keyword in mixins)
- Static keyword, static variables and methods
GENERICS
- Restricting the parameterized type
- Using generic methods
LIBRARIES AND VISIBILITY
- import
- as
- show
- hide
- deferred
ASYNCHRONY SUPPORT
- Futures
- await
- async
- Streams
- Stream methods
OTHER TOPICS
- Generators
- Callable classes
- Isolates
- Typedefs
- Metadata
- Custom annotation
- Comments, Single-line comments, Multi-line comments, Documentation comments
OTHER KEYWORDS FUNCTIONS
- covariant
- export
- external
- part
- sync
- yield
FLUTTER ROADMAP

Flutter Installation (First App)
- Flutter Installation
- Basic Structure
- Android Directory Structure
- iOS Directory Structure
BASICS
- MaterialApp
- Scaffold
- AppBar
- Container
- Icon
- Image
- PlaceHolder
- RaisedButton
- Text
- RichText
STATELESS AND STATEFULWIDGETS
- Differences
- When To Use?
- How To Use?
- Add Some Functionality
INPUT
- Form
- Form Field
- Text Field
- TextEditing Controller
- Focus Node
LAYOUTS
- Align
- Aspect Ratio
- Baseline
- Center
- Constrained Box
- Container
- Expanded
- Fitted Box
- FractionallySizedBox
- Intrinsic Height
- Intrinsic Width
- Limited Box
- Overflow Box
- Padding
- Sized Box
- SizedOverflowBox
- Transform
- Column
- Flow
- Grid View
- Indexed Stack
- Layout Builder
- List Body
- List View
- Row
- Stack
- Table
- Wrap
- Safe Area
MATERIAL COMPONENTS
- App bar
- Bottom Navigation Bar
- Drawer
- Material App
- Scaffold
- SliverAppBar
- TabBar
- TabBarView
- WidgetsApp
NAVIGATOR
- pop
- Routes
- Bottom Navigation
- Drawer
- Create Multipage App
- popUntil
- canPop
- push
- pushNamed
- popAndPushNamed
- replace
- pushAndRemoveUntil
- NavigatorObserver
- MaterialRouteBuilder
BUTTONS
- ButtonBar
- DropdownButton
- FlatButton
- FloatingActionButton
- IconButton
- OutlineButton
- PopupMenuButton
- RaisedButton
INPUT AND SELECTIONS
- Checkbox
- Date & Time Pickers
- Radio
- Slider
- Switch
DIALOGS, ALERTS, AND PANELS
- AlertDialog
- BottomSheet
- ExpansionPanel
- SimpleDialog
- SnackBar
INFORMATION DISPLAYS
- Card
- Chip
- CircularProgressIndicator
- DataTable
- LinearProgressIndicator
- Tooltip
LAYOUT
- Divider
- ListTile
- Stepper
SCROLLING
- CustomScrollView
- NestedScrollView
- NotificationListener
- PageView
- RefreshIndicator
- ScrollConfiguration
- Scrollable
- Scrollbar
- SingleChildScrollView
Theory …
- Flutter -Inside View
- Dart
- Skia Engine
- Performance
- Comparison
- App Built In Flutter
OTHER USEFUL WIDGETS
- MediaQuery
- LayoutBuilder
- OrientationBuilder
- FutureBuilder
- StreamBuilder
- DraggableScrollableSheet
Learn How to Use Third Party Plugins
CUPERTINO (IOS-STYLE) WIDGETS
- CupertinoActionSheet
- CupertinoActivityIndicator
- CupertinoAlertDialog
- CupertinoButton
- CupertinoContextMenu
- CupertinoDatePicker
- CupertinoDialog
- CupertinoDialogAction
- CupertinoNavigationBar
- CupertinoPageScaffold
- CupertinoPicker
- CupertinoPageTransition
- CupertinoScrollbar
- CupertinoSegmentedControl
- CupertinoSlider
- CupertinoSlidingSegmentedControl
- CupertinoSwitch
- CupertinoTabBar
- CupertinoTabScaffold
- CupertinoTabView
- CupertinoTextField
- CupertinoTimerPicker
ANIMATIONS
- Ticker
- Animation
- AnimationController
- Tween animation
- Physics-based animation
- AnimatedWidget
- AnimatedBuilder
- AnimatedContainer
- AnimatedOpacity
- AnimatedSize
- FadeTransition
- Hero
- RotationTransition
- ScaleTransition
- SizeTransition
- SlideTransition
NETWORKING
- http, dio libraries
- json parsing
Local Persistent Storage
- SQFLITE
- Shared Preferences
- Hive
- JSON
- JSON- PARSING
INTERNATIONALI ZING FLUTTER APPS
- Locale
- AppLocalization
- json files
STATE MANAGEMENT
- setState
- InheritedWidget
- ScopedModel
- Provider
- Redux
- BLOC
OTHER IMPORTANT TOPICS
- Widget Tree, Element Tree and Render Tree
- App Lifecycle
- Dynamic Theming
- Flare
- Overlay widget
- Visibility Widget
- Spacer Widget
- Universal error
- Search Layout
- CustomPainter
- WidgetsBindingObserver
- RouteObserver
- SystemChrome
- Internet connectivity
- Http Interceptor
- Google Map
- Firebase Auth
- Cloud FireStore DB
- Real time DB
- File/Image Upload
- Firebase database
- Firestore
- Semantic versioning
- Finding size and position of widget using RenderObject
- Building release APK
- Publishing APK on Play Store
- RxDart
USEFUL TOOLS
- Dev Tools
- Observatory
Git and GitHub
- Basics
- Add ,Commit
- Push
- Pull
- Github,Gitlab And Bitbucket
Learn How to Become UI Pro
- Recreate Apps
- Animations
- Dribble -App Ui
- Make Custom Widgets
Native Components
- Native Share
- Permissions
- Local Storage
- Bluetooth
- WIFI
- IR Sensor
API -REST/GRAPH
- Consume API
- Basics of Web Dev
- Server
TESTING AND DEBUGGING
- Debugging
- Unit Testing
- UI (Widget) Testing
- Integration Testing
WRITING CUSTOM PLATFORM-SPECIFIC CODE
- Platform Channel
Conclusion: There are some courses out there but I believe self-learning is the best. However, you can take help whenever you feel like it. Continue Your Journey By making Apps and also You can clone the existing apps for learning the concept more clearly like Ecommerce , Instagram , Expense Manager , Messenger ,bla bla …….
Most important thing to remember that don’t depend on others too much , when you face any problem just google it and a large flutter community is always with you.
Best of luck for your Flutter journey
