Flutter Beyond Hello world!
By : Ahmed Abu Eldahab
@dahabdev
Ahmed Abu Eldahab
Senior Software Consultant
Google Developer Expert in Flutter
/Dahabdev
@dahabdev
Tell me about you?
Developers ,
Designers , Mac ,
Linux , Windows ,
Web , Mobile ,
Android , ios ?
@dahabdev
Flutter is Google’s UI toolkit
for building beautiful,
natively compiled
applications for mobile, web,
and desktop from a single
codebase
Control every pixel on the screen
Make your brand come to life
Never say "no" to your designer
Stand out in the marketplace
Win awards with beautiful UI
Expressive, beautiful UIs
Flutter support many types of
Animations
- Tween
- Hero
- Sliver
- Transform
- FadeInWidget
- Animation Builder
- AnimatedOpacity
- Physics-based animation
Beautiful Animations
Fast
Brings the power of a games engine to
user experience development
60fps, GPU accelerated
Compiled to native machine code
Sub-second reload times
Paint your app to life
Iterate rapidly on features
Test hypotheses quicker than ever
More time to experiment & test
features
Single-codebase for faster collab
3X Productivity Gains
Productive
Flutter Architecture
Flutter Architecture
What makes Flutter unique?
- Compiles to Native Code (ARM Binary code)
- No reliance on OEM widgets
- No bridge needed
- No markup language (only Dart)
https://www.youtube.com/c/DahabIT
Everything is a Widget
Everything is a Widget
Everything is a Widget
Stateless Widget is immutable widget doesn’t know anything
& Gets render only once or when the parent widget changes
the configuration
Everything is a Widget
Stateful Widget is mutable widget which has its own
properties knowing as state and it can be changed by user
input or by using setState()
Flutter Widgets
Flutter Widgets
Flutter Widgets
Flutter Widgets
Flutter Widgets
Flutter Widgets
Flutter Widgets
Flutter Widgets
Flutter Widgets
Flutter Widgets
Flutter Widgets
Flutter Widgets
Flutter Widgets
Flutter Widgets
Stateless Widget
Constructor Function
build()
Stateful Widget
Constructor Function
build()
initState()
setState()
build()
didUpdateWidget()
dispose()
Flutter Widgets
Flutter Widgets
Rebuilds frequently
Element Tree Render TreeWidget Tree
Rarely rebuilds Rarely rebuilds
Container ElementContainer
Column
Text
Column Element
Text Element
Rendered Box
Rendered Box
Rendered Box
Flutter Widgets
Rebuilds frequently
Element Tree Render TreeWidget Tree
Rarely rebuilds Rarely rebuilds
Container ElementContainer
Column
Text
Column Element
Text Element
Rendered Box
Rendered Box
Rendered Box
Flutter Widgets
Rebuilds frequently
Element Tree Render TreeWidget Tree
Rarely rebuilds Rarely rebuilds
Container ElementContainer
Column Column Element
Text Element
Rendered Box
Rendered Box
Rendered Box
Flutter Widgets
Rebuilds frequently
Element Tree Render TreeWidget Tree
Rarely rebuilds Rarely rebuilds
Container ElementContainer
Column Column Element
Rendered Box
Rendered Box
Flutter Widgets
Rebuilds frequently
Element Tree Render TreeWidget Tree
Rarely rebuilds Rarely rebuilds
Container ElementContainer
Column
List
Column Element
List Element
Rendered Box
Rendered Box
Rendered Box
Flutter Widgets
Rebuilds frequently
Element Tree Render TreeWidget Tree
Rarely rebuilds Rarely rebuilds
Container ElementContainer
Column
List
Column Element
List Element
Rendered Box
Rendered Box
Rendered Box
Flutter Widgets
Rebuilds frequently
Element Tree Render TreeWidget Tree
Rarely rebuilds Rarely rebuilds
Container ElementContainer
Column
List
Column Element
List Element
Rendered Box
Rendered Box
Rendered Box
Flutter Widgets
Rebuilds frequently
Element Tree Render TreeWidget Tree
Rarely rebuilds Rarely rebuilds
Container ElementContainer
Column
List
Column Element
List Element
Rendered Box
Rendered Box
Rendered Box
Flutter Widgets
Rebuilds frequently
Element Tree Render TreeWidget Tree
Rarely rebuilds Rarely rebuilds
Container ElementContainer
Column
List
Column Element
List Element
Rendered Box
Rendered Box
Rendered Box
Flutter Widgets
Rebuilds frequently
Element Tree Render TreeWidget Tree
Rarely rebuilds Rarely rebuilds
Container ElementContainer
Column
List
Column Element
List Element
Rendered Box
Rendered Box
Rendered Box
Unique Key Unique Key
Flutter Widgets
Rebuilds frequently
Element Tree Render TreeWidget Tree
Rarely rebuilds Rarely rebuilds
Container ElementContainer
Column
List
Column Element
List Element
Rendered Box
Rendered Box
Rendered Box
Unique Key Unique Key
Flutter Widgets
Rebuilds frequently
Element Tree Render TreeWidget Tree
Rarely rebuilds Rarely rebuilds
Container ElementContainer
Column
List
Column Element
List Element
Rendered Box
Rendered Box
Rendered Box
Unique Key Unique Key
Flutter Widgets
Rebuilds frequently
Element Tree Render TreeWidget Tree
Rarely rebuilds Rarely rebuilds
Container ElementContainer
Column
List
Column Element
List Element
Rendered Box
Rendered Box
Rendered Box
Unique Key Unique Key
Flutter Widgets
https://www.youtube.com/watch?v=kn0EOS-ZiIc
Data Flow
Data (State)
User Interface
@dahabdev
Data (State)
Data (State)
Data (State)
Data (State)
Data (State)
Dependency
injection
Data (State)
Dependency
injection
Flutter Widgets
Flutter Widgets
Data
Flutter Widgets
Data
InheritedWidget
Data (State )Management
InheritedWidget
Data (State )Management
Data (State )Management
Data (State )Management
Data (State )Management
Data (State )Management
Data (State )Management
Data (State )Management
Data (State )Management
Data (State )Management
1. Scoped_model
2. Provider
3. Bloc
4. Mobx
5. Redux
Provider
Data (State )Management
Data (State )Management
https://pub.dev/packages/provider
Streams
https://www.youtube.com/watch?v=nQBpOIHE4eE
https://firebase.google.com/docs/flutter/setup
https://www.youtube.com/watch?v=DqJ_KjFzL9I
one more thing!
Security!
https://firebase.google.com/docs/rules
https://firebase.google.com/docs/rules/rules-language
Firebase Security Rules language
https://firebase.google.com/docs/rules/rules-language
Firebase Security Rules language
https://firebase.google.com/docs/rules/rules-language
Firebase Security Rules language
Thanks
Ahmed Abu Eldahab
Senior Software Consultant
Google Developer Expert in Flutter
/Dahabdev

Flutter beyond hello world GCDC Egypt Devfest 2019