Majid Hajian
mhadaily
mhadaily
import 'package:flutter/material.dart';
MaterialApp(
ThemeData(
name: "Majid Hajian",
location: "Oslo, Norway",
description: '''
Google Developer Expert
Passionate Software engineer,
Community Leader, Author and international Speaker
''',
main: "Flutter/Dart, PWA, Performance",
homepage: "https://www.majidhajian.com",
socials: {
twitter: "https://www.twitter.com/mhadaily",
github: "https://www.github.com/mhadaily"
youtube: "https://www.youtube.com/mhadaily"
},
author: {
Pluralsight: "www.pluralsight.com/authors/majid-hajian",
Apress: "Progressive Web App with Angular, Book",
PacktPub: "PWA development",
Udemy: "PWA development",
}
founder: "Softiware As (www.Softiware.com)"
devDependencies: {
tea: "Ginger",
mac: "10.14+",
},
community: {
FlutterVikings: "Orginizer",
FlutterDartOslo: "Orginizer",
GDGOslo: "Co-Orginizer",
DevFestNorway: "Orginizer",
...more
}));
Find me on the internet by
invertase.link/arBd
Share anything about the conference on social media and tag GDGCraiova, @Zapp_run and fill this form
Majid Hajian
mhadaily
Segmented State Pattern
Majid Hajian
mhadaily
Why?
Majid Hajian
mhadaily
MaterialApp
Screen1
Screen3
Screen2
state
state
state
MaterialApp
Screen1
Screen3
Screen2
state
STATE
Who needs it?
all (most) widgets
some widgets
Single widgets
App State
Ephemeral State
https://flutter.dev/docs/development/data-and-backend/state-mgmt/options
Wrapper based
on Flutter features
Provider
Riverprod
Flutter Hooks & ...
Reactive
programming base
Mobx
BLoc
Cubit & ...
Functional
programming base
Redux
async_redux
Domain Concerns | Architecture characterstics | Flutter concerns |
---|---|---|
Mergers | Scalability, adaptability, extensibility | Boilerplate code, easily extend, maintainer support |
Time to market | Agility, testability, deployability | easily adapt and develop, deploy a feature |
Dev satisfaction | Performance, productivity, Error handling, agility, testability, maintainability, | Code generation, DevTools, Docs, examples and etc |
Time & budget | Simplicity, feasibility | Complexity, Team size & knowledge and size of project |
https://github.com/brianegan/flutter_architecture_samples
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
***** | *** | ** | * | ** | ***** | ***** | ** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
***** | ***** | *** | *** | *** | **** | ***** | **** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
*** | **** | ***** | ***** | ***** | *** | **** | **** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
** | *** | ***** | ***** | *** | *** | *** | **** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
*** | **** | *** | **** | **** | *** | *** | ***** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
** | ** | **** | **** | *** | ** | *** | ** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
**** | **** | *** | **** | **** | *** | *** | *** |
setState()
Riverpod
BLoC
MobX
Redux
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
* | *** | **** | **** | **** | ** | *** | *** |
GetIt / GetIT_mixin
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
***** | *** | ** | * | ** | ***** | ***** | ** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
*** | **** | ***** | ***** | ***** | *** | **** | **** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
** | *** | ***** | ***** | *** | *** | *** | **** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
*** | **** | *** | **** | **** | *** | *** | ***** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
**** | **** | *** | **** | **** | *** | *** | *** |
setState()
Riverpod
BLoC
MobX
Redux
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
* | *** | **** | **** | **** | ** | *** | *** |
GetIt / GetIT_mixin
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
***** | *** | ** | * | ** | ***** | ***** | ** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
*** | **** | ***** | ***** | ***** | *** | **** | **** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
** | *** | ***** | ***** | *** | *** | *** | **** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
*** | **** | *** | **** | **** | *** | *** | ***** |
Simplicity | Productivity | Testability | Scalability | Maintainability | Adaptability | Agility | Deployability |
---|---|---|---|---|---|---|---|
**** | **** | *** | **** | **** | *** | *** | *** |
Application
Infrastructure
Presentation
Presentation
Application
Application
Infrastructure
Presentation
Presentation
Application
Majid Hajian
mhadaily
mhadaily
Majid Hajian
mhadaily
Slides/Codes
slides.com/mhadaily
SVG icons credited to undraw.co