Flutter Roadmap 2023

Alghany Kennedy Adam
6 min readMay 27, 2023

--

https://roadmap.sh/flutter

Hello Everyone, welcome to flutter roadmap please join me as we travel the road to becoming a flutter developer. This article is inlined for those who are keen to start with Flutter. A roadmap for beginners to learn gradually from all necessary resources. So, let’s go!🚀

💫 What is Flutter?

First of all let me explain very briefly what is Flutter.

Flutter is a cross-platform mobile app development framework it is developed by Google it is used to develop native apps for Android, iOS, Windows, Linux, Mac, Google fuchsia, and the web from a single code base it is an open-source framework it is used to develop high performance and high-quality native apps.

https://flutter.dev/development
Apps developed by flutter work on several platforms

Introductory to flutter is in best summarized in below-mentioned videos;

Now let’s see the roadmap of flutter.

🎯 Step 1 Learn Basic Dart

The first step is learning basic Dart. Solid understanding of Dart is required to build quality apps with Flutter. So first, you need to learn basic Dart you can learn Dart from this website.

Dart Tutorial — Learn Dart Programming

Here are some topics you need to learn:

· Basic “Hello World!” program

· Variables and Constants

· Conditions and Loops

· Lists and Methods of List

· Methods and Types

· OOP (Object-Oriented Programming)

· Null Safety

· Asynchronous Programming

🧿 Step 2 Learn Basic Flutter

After learning basic Dart you need to learn basic of Flutter learn about layouts widgets in Flutter start by learning layouts widgets like:

· Material App

· AppBar

· Text

· TextField

· Button

· Image

· Row

· Column Etc

Here are some code example to create basic widgets:

import 'package:flutter/material.dart';


void main() {
runApp(const MyApp());
}

class MyApp extends StatelessWidget {
const MyApp({super.key});

@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Learn Basic Flutter',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const HomePage(),
);
}
}

class HomePage extends StatelessWidget {
const HomePage({super.key});

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.blue,
title: const Text(
'AppBar',
style: TextStyle(color: Colors.white),
),
centerTitle: true,
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.only(bottom: 20),
child: SizedBox(
height: 150,
width: 150,
child: Image.asset('assets/img/flutter-icon.png'),
),
),
const Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Here is Text',
style: TextStyle(
fontSize: 16,
color: Colors.black,
fontWeight: FontWeight.bold),
),
SizedBox(
width: 10,
),
Text(
'in Row',
),
SizedBox(
width: 10,
),
Icon(Icons.favorite),
],
),
const Padding(
padding: EdgeInsets.symmetric(horizontal: 18, vertical: 16),
child: TextField(
decoration: InputDecoration(
border: OutlineInputBorder(),
hintText: 'Here is Text Field',
),
),
),
ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.blue,
),
onPressed: () {},
child: const Text(
'Button',
style:
TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
))
],
),
);
}
}

Output:

Basic Flutter Widgets

🔗 Step 3 Learn Navigation & Functionalities

After learning basics of Flutter, you need to learn about navigation and functionalities learn about navigation like:

· Navigator.push

· Navigator.pop

· Create two text fields and Implement functionalities like add and subtract

Here are some code example to implement navigation:

import 'package:flutter/material.dart';
import 'package:learn_basic_flutter/second_screen.dart';

void main() {
runApp(const MyApp());
}

class MyApp extends StatelessWidget {
const MyApp({super.key});

@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Learn Basic Flutter',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const FirstScreen(),
);
}
}

class FirstScreen extends StatelessWidget {
const FirstScreen({super.key});

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.blue,
title: const Text(
'First Screen',
style: TextStyle(color: Colors.white),
),
centerTitle: true,
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Padding(
padding: EdgeInsets.all(10.0),
child: Text('Navigator.push', style: TextStyle(fontSize: 20)),
),
ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.blue,
),
onPressed: () {
Navigator.push(context, MaterialPageRoute(builder: (context) {
return const SecondScreen();
}));
},
child: const Text(
'Go To Second Screen',
style: TextStyle(
color: Colors.white, fontWeight: FontWeight.bold),
))
],
),
),
);
}
}

Second Screen code example:

import 'package:flutter/material.dart';

class SecondScreen extends StatelessWidget {
const SecondScreen({super.key});

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
automaticallyImplyLeading: false,
backgroundColor: Colors.red,
title: const Text(
'Second Screen',
style: TextStyle(color: Colors.white),
),
centerTitle: true,
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Padding(
padding: EdgeInsets.all(10.0),
child: Text('Navigator.pop', style: TextStyle(fontSize: 20)),
),
ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.red,
),
onPressed: () {
Navigator.pop(context);
},
child: const Text(
'Go To First Screen',
style: TextStyle(
color: Colors.white, fontWeight: FontWeight.bold),
))
],
),
),
);
}
}

Output:

Navigation Screen Example

📦 Step 4 Learn Flutter Packages

Flutter supports using shared packages contributed by other Developers to the Flutter and this allows quickly building an app without having to develop everything from scratch. Learns about package like:

· HTTP

· Shared_preferences

· Sqflite

· Etc

Learn about how to use them you can also access all the packages using the pub.dev website.

🌐 Step 5 Learn use API

Data, data and data everything we see in today’s world is just data so how can we get data into our app how can we integrate into our app fetching data from the internet is necessary for most apps luckily Dart and Flutter provide tools such as the HTTP package for this type of work you can also learn it by referring to flutter’s document or here some reference.

https://www.krasamo.com/restful-communication-in-flutter/
https://www.krasamo.com/restful-communication-in-flutter/

📁 Step 6 Learn use Shared Preferences & Sqflite

Local Database In Flutter

All mobile applications nowadays revolve around data some of it is stored in cloud and some in local storage. According to its usage to provide offline access to the app it is necessary to store data in a local database. Shared_preferences and Sqflite are used to store data locally learn how to use Shared_preferences and Sqflite. And here some reference you can read.

📊 Step 7 Learn State Management

Managing state in an application is one of the most important and necessary process in the life cycle of an application in flutter state is whatever date you need in order to rebuild your UI at any moment in time when this data change it will trigger redraw the user interface learn about how to use State Management in flutter using:

· Bloc

· GetX

· Provider

· Riverpod

· setState

· Etc

🔥 Step 8 Learn to Use Firebase

Flutter Using Firebase

Firebase is a backend service it is used to build apps faster learn about how to use firebase and flutter using:

· Firebase_auth

· Firebase_core

· Firebase_storage

· Etc

🎨 Step 9 Animation & Custom Painters

Flutter is on the rolls nowadays like everything related to UI Flutter makes custom drawing easy too learn about how to use animation and custom painters in flutter.

Flutter Animation

🔧 Step 10 Learn to use CI/CD (continuous integration and continous deployment)

CI/CD

As we all know making a release to the Apple store & Play store is a grievous task especially if you are working with a cross-platform framework that’s where the CI/CD is coming to help. CI/CD helps accelerate release rates since the time to detect and correct failures in production is shorter. Learn about how to use CI/CD using Github Actions. For more information you can read this articles.

https://iqan.medium.com/ci-cd-for-flutter-android-app-using-github-actions-ea065180a3be

This article is only for beginners but I will be coming out with the new article with advanced resources in Flutter.

Thanks for reading this article ❤

If I got something wrong 😄, Let me know in the comments. I would love to improve.

Connect with me on Linkedin, Instagram, Twitter and Github

--

--