Flutter Beyond Hello world! By : Ahmed Abu Eldahab @dahabdev
Ahmed Abu Eldahab Senior Technical Consultant Google Developer Expert in Flutter /Dahabdev @dahabdev
Tell me about you? Developers , Designers , Mac , Linux , Windows , Web , Mobile , Android , ios ? @dahabdev
Mobile Development Approaches
Flutter Approach Canvas Events Location Bluetooth Camera Sensors Native ARM Binary Code Services Platform Channels Flutter Widgets Cupertino Material Design
What makes Flutter unique? - Compiles to Native Code (ARM Binary code) - No reliance on OEM widgets - No bridge needed - No markup language (only Dart)
Build beautiful apps in record time
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
● Language and Libraries ● Packages manager https://pub.dev ● Virtual machine ● Compile to Javascript dart2js Dart is a client-optimized language for fast apps on any platform! (Web - Desktop - Mobile - Embedded)?
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 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
Provider Data (State )Management
Data (State )Management https://pub.dev/packages/provider
Scoped Model Data (State )Management
Data (State )Management https://pub.dev/packages/scoped_model
Bloc Data (State )Management
Data (State )Management https://pub.dev/packages/bloc
Redux Data (State )Management
Data (State )Management https://pub.dev/packages/flutter_redux
Mobx Data (State )Management
Data (State )Management https://pub.dev/packages/flutter_mobx
Data (State )Management https://pub.dev/packages/fish_redux
Data (State )Management
Streams
Data (State )Management
Data (State )Management 1. Scoped_model 2. Provider 3. Bloc 4. Mobx 5. Redux
Design Patterns
Directory structure
Flutter Design Patterns
Flutter Design Patterns
Flutter Design Patterns https://github.com/brianegan/flutter_architecture_samples http://fluttersamples.com
Thanks
Ahmed Abu Eldahab Senior Technical Consultant Google Developer Expert in Flutter /Dahabdev

Flutter beyond Hello world talk