Complete Flutter and Dart Roadmap 2020

Mohammad Ali Shuvo
4 min readOct 30, 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

Get Ready and Go………..

--

--