Flutter Engineering

Xurshidbek Kurbanov
4 min readApr 22, 2024

--

World Wide Flutter 🎯

Dart Programming I

Dart Programming II

Flutter Framework I

Flutter Framework II

Real-World Projects

Data Structures in Dart

“4PMs — More than a concept” by Xurshidbek

Dart Programming I

Dart Programming Language

Overview

Basic Syntax

Variables

Null Safety

Operators

Conditions

Loops

Data Types I

Data Types II

Runes

Collections

Functions

Typedef

Enumeration

Algorithm problems with Dart

Leetcode Problems

Number Algorithms

String Algorithms

Array Algorithms

Matrix Algorithms

Dynamic Programming

Interview Approaches

Dart Programming II

Object-Oriented Programming in Dart

Classes

Objects

Getters & Setters

Constructor

Overloading

Inheritance

Overriding

Abstraction

Interface

Mixin

Polymorphism

Exceptions

Generics

Solid Principles

Design Patterns

Asynchronous Programming in Dart

Synchronous

Asynchronous

async keyword

await keyword

future keyword

Future (async)

Then

Handling Errors

Stream (async*)

yield

Single Streams

Broadcast Streams

Flutter Framework I

Android & iOS Settings

Overview of Flutter SDK

Installation

Windows, Mac, Linux

Android Studio

Android Emulator

Android Phone, Tablet

Xcode

iOS Simulator

iPhone, iPad

Hello World Project

Change App Icon

Change App Name

easyappicon.com

AndroidManifest.xml

Info.plist

Git & GitHub

SVN

GitHub

GitLab

Bitbucket

Commits

Branches

Clone

Pull

Push

Fetch

Merge

Rebase

Squash

Navigation & Routing

Navigator

MaterialPageRoute

push

pushReplacement

pushNamed

pushReplacementNamed

Passing data forward to the next screen

Passing data back to the previous screen

Widgets in Focus I

Text

SetState

Stateless Widget

Stateful Widget

Column

Row

Stack

Container

Expanded

Material Button

Outline Button

Icon Buttons

Image

Local Image

AssetImage

Network Image

CachedNetworkImage

Widgets in Focus II

Android Dialog

iOS Dialog

AlertDialog

CupertinoAlertDialog

Platform.isAndroid

Platform.isIOS

Platform.isWeb

Drawer

ListView

Horizontal ListView

SingleChildScrollView

GridView

PagerView

TabBarView

Widgets in Focus III

Container

Decoration

LinearGradient

Customized Buttons

Text

GestureDetector

Customized TextFields

SliverAppBar

NavigationRail

Form

GlobalKey

FormState

TextFormField

Building an App

Instagram App

Splash Page

SignIn Page

SignUp Page

Reels Page

Timer, Duration

MediaQuery

Custom Fonts

Billabong

HexColor

Amazon App, Shop Page

Facebook App, Feed Page

App Performance

Build Modes

kDebugMode

kProfileMode

kReleaseMode

DevTools

Application Performance Monitoring (APM)

Hot-Reload

Hot-Restart

Just In Time(JIT)

Ahead Of Time(AOT)

Debugging

Theme Modes

Theme Mode

ThemeData.light

ThemeData.dark

Customized ThemMode

AppTheme, AppColor

LightColorTheme

DarkColorTheme

Brightness

Primary

OnPrimary

Secondary

OnSecondary

PrimaryContainer

OnPrimaryContainer

Localizations

Localization

Internationalization

EasyLocalization

Locales

Language Code

Country Code

en-US, ru-RU

uz-UZ, kr-KO

Assets

Translations

JSON

Lifecycles

Widget Lifecycles

initState

didChangeDependencies

build

didUpdateWidget

setState

deactivate

dispose

App Lifecycles

WidgetsBindingObserver

AppLifecycleStates

inactive

resumed

paused

detached

hidden

Widget Types

Stateless Widget

Stateful Widgets

Inherited Widget

updateShouldNotify

ThemeColor.of()

Widget Tree

Element Tree

Widgets

Stateful Element

Stateless Element

State Object

Key Types

Value Key

TextField

ValueKey(“name”)

Unique Key

StatefulWidget

Emoji

UniqueKey()

Object Key

ReorderableListView

ObjectKey(item)

Global Key

Passing State

GlobalKey

CounterPageState

Animations

AnimationController

Tween

Animation

Listener

Status

Resize/Pulse Animation

Slide Animation

Customized Animation

Fade Animation

Packages

Lottie Animation

Lottie Asset

Lottie Network

JSON

Flutter Framework II

Shared Preferences

Android

SharedPreferences

iOS

NSUserDefaults

Web

LocalStorage

Write ,Read, Remove

Value, Object

Service

View Data

Device Explorer

Package Name

BundleID

Data Folder

XML

Encrypted Shared Preferences

Flutter Secure Storage

SharedPreferences

Android KeyStore

iOS Keychain

AES Encryption

RSA Encryption

Write ,Read, Remove

View Data

Device Explorer

Package Name

BundleID

Data Folder

XML

NoSQL Databases

NoSQL Database

Hive Flutter

Hive Generator

Build Runner

Path Provider

Register Adapter

Put, Add, PutAt, Get, Delete

Save object using key and value

Save object without key

View Data

Device Explorer

Package Name

BundleID

Data Folder

XML

SQL Databases

SQL Database

Sqflite

Path Provider

DB name, DB version

Open Database, SQL Query

Create Object

Fetch Objects

Update Object

Delete Object

View Data

Device Explorer

Package Name

BundleID

Data Folder

XML

Networking I

REST

Socket

GraphQL

Rest (Http)

Rest (Dio)

Rest (Retrofit)

Customized Network Class

GET, POST, PUT, DELETE

API, Postman

Logger

Network Request

Network Response

Networking II

Parsing Response

JSON to Object

Customized Network Class

quicktype.io

API, Postman

File Upload

Multipart

Multithread & Isolate

Single Streams

Broadcast Streams

Firebase Essentials

Firebase Project

Android Settings

iOS Settings

Firebase Auth

Firebase Databases

Firebase Storage

Crashlytics

App Distribution

Remote Config

Clone App with Firebase

Firebase Authentication

Firebase Database

Firebase Storage

Firebase Messaging

Redesigning Instagram

Push Notifications (FCM)

Local Notifications

Shared Preferences

Image Loading & Caching

Custom Fonts

Device Parameters

State Managements

Real-World Examples

SetState

Provider

Riverpod

GetX

BloC(Bloc)

BloC(Cubit)

REST API

Pagination

Deep Dive into GetX

GetMaterialApp

Get.put, Get.find

Get.lazyPut

Obx, GetX

GetBuilder

obs, update

DIService

BindService

Bindings

Get.to, Get.toNamed

Get.back, Get.off, Get.offAll

GetStorage

Get Localization

Get Theme Mode

Get Validators

GetConnect

Deep Dive into BloC

BlockProvider

MultiBlockProvider

BlocBuilder

RepositoryProvider

MultiRepositoryProvider

BlocSelector

BlocListener

MultiBlocListener

BlocConsumer

Bloc or Cubit

Bloc Concurrency

Event Bus

Deep Dive into Riverpod

riverpod

flutter_riverpod

flutter_hooks

hooks_riverpod

Provider Scope

Provider

Consumer

Consumer Widget

watch & read

State Provider

Stream Provider

Future Provider

State Notifier

Change Notifier

Notify Listeners

Freezed Unions

Auto Dispose

Clean Architecture

Dependency Injection (DI)

Dagger(Android)

Swinject(iOS)

get_it(Flutter)

Injectable

MVC Architecture

MVVM Architecture

Presentation

Data

Domain

UI

Modularization

Advanced Concepts

Platform channel with Kotlin

Platform channel with Swift

Android Specific

iOS Specific

Unit Test

Widget Test

Integration Test

CI/CD

Github Actions

Real-World Projects

Project Planning

Plan Team

Design Team

Development Team

BackEnd Team

Mobile Team

FrontEnd Team

Real World Project (GetX)

Obx,GetX

GetBuilder

Google AI-I

Internationalization

Dark & Light Themes

Dependency Injection

SQL & NoSQL Databases

Featured Animations

Customized Networking

Functional Programming

Clean Architecture

CI/CD, Github Actions

Real World Project (Bloc)

Bloc

Google AI-II

Internationalization

Dark & Light Themes

Dependency Injection

SQL & NoSQL Databases

Featured Animations

Customized Networking

Functional Programming

Clean Architecture

CI/CD, Github Actions

Real World Project (Cubit)

Cubit

Google AI-III

Internationalization

Dark & Light Themes

Dependency Injection

SQL & NoSQL Databases

Featured Animations

Customized Networking

Functional Programming

Clean Architecture

CI/CD, Github Actions

Real World Project (Riverpod)

Riverpod

Google AI-IV

Internationalization

Dark & Light Themes

Dependency Injection

SQL & NoSQL Databases

Featured Animations

Customized Networking

Functional Programming

Clean Architecture

CI/CD, Github Actions

Android & iOS Deployment

Play Market by Google

App Store by Apple

App Gallery by Huawei

Data Structures in Dart

Data Structures

BigO Notation

LinkedList

Stacks

Queues

Trees

BFS

DFS

Tries

Heap

Directed Graphs

Undirected Graphs

BFS, DFS in Graphs

Dijkstra’s Algorithm

--

--