FLUTTER
Presented by: Charbel Akiki, Lebanon 2023
Computer and Communication Engineering
Student at Notre Dame University, Lebanon.
Intern with AIIHC International Ltd.
Supervisor: Ramzi El Feghali
August-November 2023
AIIHC International Ltd. 2023
WHAT IS
FLUTTER?
Based on Dart
Used for User Interface in App
development
Supports development for both
android and IOS
High performance framework
AIIHC International Ltd. 2023
 Large repository of packages and
libraries
 Unique code base for all platforms
 Fewer testing required
 Easy customization
 Fast development
 Hot Reload feature
ADVANTAGES
AIIHC International Ltd. 2023
DISADVANTAGES
 Dart mastery required
 UI and logic are intermixed
 Can be overwhelming for coding beginners
 Packages are user-developed
AIIHC International Ltd. 2023
FLUTTER DOWNLOAD
HEAD TO FLUTTER.COM DOWNLOAD GIT,
ANDROID STUDIO AND VS
CODE
DOWNLOAD FLUTTER SDK
PACKAGES
AIIHC International Ltd. 2023
HOW TO CREATE A FLUTTER
PROJECT?
Method 1:
Through the
Terminal
(Command
Prompt or
PowerShell)
Method 2:
Through VS Code
directly
AIIHC International Ltd. 2023
FLUTTER
PROJECT
AIIHC International Ltd. 2023
BASICS OF DART
AIIHC International Ltd. 2023
KEYWORDS
AIIHC International Ltd. 2023
EXAMPLES
var value = true;
final x = null;
const y = 5;
AIIHC International Ltd. 2023
DATA TYPES
Integers
Doubles
Strings
Booleans
Lists
Sets
Maps
Null
AIIHC International Ltd. 2023
EXAMPLES
 final String x = ‘Hello’;
 const Int y = 5;
 const List L = [‘a’,’b’,’c’];
AIIHC International Ltd. 2023
OPERATORS
Arithmetic (+, -, *, /, ~/, % )
Increment and decrement (x++, ++x, x--, --x)
Equality and relational (==, !=, <, >, <=, >= )
Type checking and casting (is, is! )
Logical operators (!, ||, &&)
Null-safe and null-aware (??, ??=, ?.)
AIIHC International Ltd. 2023
EXAMPLES
var x = 1 + 1; 2
X++; 3
Print(x==3) true
X is int  true
Print( x==3 && x <2)  false
AIIHC International Ltd. 2023
VARIABLES
 Constants (final, const)
 Dynamic (No assigned value)
 Regular (can be of any data type)
AIIHC International Ltd. 2023
EXAMPLES
 Final Int x = 5;  Constant
 Var x;  Dynamic
 Var Int x = 5;  Regular Variable
AIIHC International Ltd. 2023
FAMILY OF
LISTS
 Lists [elements]
 Sets {unique elements}
 Maps {keys: elements}
AIIHC International Ltd. 2023
EXAMPLES
 List <String> names = [‘joe’, ‘joe’, ’mike’];
 Set <Int> numbers = {1, 2, 3};
 Map <int, String> books = {1: ‘Book1’, 2:
‘Book2’};
AIIHC International Ltd. 2023
LOOPS
Dart supports for , while
and do…while loops:
for (var i = 1 ; i <= 10; i+
+){…}
1. Creates variable i of type int equal to 1
2. Checks condition (i=1<=10)  enter body or exit
loop
3. Execute body
4. Increment i by 1
5. Repeat from step 2
AIIHC International Ltd. 2023
EXAMPLES
Var I = 1;
While(I <=10){… i++}
Do{…}while(I<=10) does the loop body at least once
then checks condition
AIIHC International Ltd. 2023
CONDITIONS
A decision-making block evaluates a
condition before the instructions are
executed. Dart supports If, If..else and
switch statements.
 If(x==1){…}
Else if(x==2}{…}
Else{…}
 Switch(x){
Case 1: //if x==1
…
Break;
Case 2:
…
Break;}
AIIHC International Ltd. 2023
Properties:
 Return Value
 Name
 Parameters
 Body
FUNCTIONS
AIIHC International Ltd. 2023
FUNCTIONS
SYNTAX
String getFullName(String firstName =
‘Charbel’, [String? lastName]’){
return ‘$firstName $lastName’;
}
AIIHC International Ltd. 2023
OBJECT ORIENTED
PROGRAMMING
AIIHC International Ltd. 2023
CLASSES
A class is a blueprint for creating objects, it
is a grouping of various functionalities of a
certain object, it can have many features
such as methods, properties, constructors
and instances.
class Person {
final String name;  Property
Person(this.name);  Constructor
void func(){  Method
Print(‘this.name’);
}
}
final guy = Person(‘John’);  Instance of
class Person
guy.func()  prints ‘John’
AIIHC International Ltd. 2023
INHERITANCE
Used to transfer a parent class
properties to its child:
Class Man extends Person{
final bool beard;
Man(super.name, this.beard);
}
AIIHC International Ltd. 2023
ABSTRACT
CLASSES
Used to create classes that are not
meant to be instantiated:
abstract class Person{…}
 Cannot make a Person Object
 Can create an extended Man class
from Person
AIIHC International Ltd. 2023
FACTORY
CONSTRUCTOR
S
 Used to facilitate the instantiation of
similar instances (that have same
property)
Class Person{
final string name;
Person(this.name);
factory
Person.FactoryConstructor() =>
Person(‘Joe’)
}
var guy = Person.FactoryConstructor();
Print(guy.name)  ‘joe’
AIIHC International Ltd. 2023
CUSTOM
OPERATORS
Class Person{
…
@override
bool operator==(covariant
Person other) =>other.name ==
name;
}
Final guy1 = Person(‘joe’);
Final guy2 = Person(‘rogan’);
Print(guy1 == guy2)  false
AIIHC International Ltd. 2023
WIDGETS
AIIHC International Ltd. 2023
WIDGETS
 Basis of Flutter UI
 Classes by nature (properties, methods
etc…)
 Widget Complexity
 Countless usages
AIIHC International Ltd. 2023
WIDGET TYPES
 Platform Specific
 Layout
 State Maintenance
 Basic
AIIHC International Ltd. 2023
PLATFORM
SPECIFIC
WIDGETS
 Material Widgets: Android (Scaffold, AppBar
etc…)
 Cupertino: IOS (CupertinoPageScaffold,
CupertinoButton etc…)
AIIHC International Ltd. 2023
LAYOUT WIDGETS
 Center
 Row
 Column
 Container
 SizedBox
AIIHC International Ltd. 2023
EXAMPLE OF USING LAYOUT
WIDGETS TO MAKE A TABLE OF
WIDGETS
Scaffold(
body: Container(
child: Row(
children: [Widget1(),Widget2()];
)
),
Container(
child: Row(
children: [Widget3(),Widget4()];
)
)
)
Widget1 Widget2
Widget3 Widget4
AIIHC International Ltd. 2023
STATE
MAINTENANCE
WIDGETS
 Stateful (Reactive, allows for auto re-
rendering)
 Stateless (non-reactive)
AIIHC International Ltd. 2023
SOME BASIC
WIDGETS
 Text():
body: Text(text: ‘Hello World’, style:
TextStyle(fontstyle: FontStyle.italic))
 Image():
body: Image.network(image:
’https://…’, height: 200)
 Icon():
body: Icon(Icons.email)
AIIHC International Ltd. 2023
SAMPLE
CODE
AIIHC International Ltd. 2023
AIIHC International Ltd. 2023
SOME USEFUL PACKAGES
http
Dio
Dio_cookie_manager
AIIHC International Ltd. 2023
HOW TO ADD
PACKAGES
 Head to pub.dev
 In the pubspec.yaml file, under
dependencies copy and paste the
name and version of the package.
 Import
‘package:package_name/package
_name.dart
AIIHC International Ltd. 2023
THANK YOU FOR
YOUR TIME

More Related Content

PPT
C# Tutorial MSM_Murach chapter-15-slides
PDF
Coding Ajax
PPT
CONSTRUCTORS IN C++ +2 COMPUTER SCIENCE
PDF
Coding Ajax
PDF
It's complicated, but it doesn't have to be: a Dagger journey
PDF
iOS for Android Developers (with Swift)
PPT
PostThis
C# Tutorial MSM_Murach chapter-15-slides
Coding Ajax
CONSTRUCTORS IN C++ +2 COMPUTER SCIENCE
Coding Ajax
It's complicated, but it doesn't have to be: a Dagger journey
iOS for Android Developers (with Swift)
PostThis

Similar to Flutter_CharbelAkiki.pdf (20)

PPTX
CONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptx
PDF
C++ Programming
PPTX
OOP-Lecture-05 (Constructor_Destructor).pptx
PPTX
Presentation1 password
DOCX
Vb.net Experiment with Example
PPTX
Introduction To Google Android (Ft Rohan Bomle)
PPTX
iOS,From Development to Distribution
PPTX
Oop concept in c++ by MUhammed Thanveer Melayi
PDF
Flutter Festival IIT Goa: Session 1
DOCX
• GUI design using drag and drop feature of IDE(Net beans), • File IO
PDF
Front End Development: The Important Parts
PPTX
Android Development w/ ArcGIS Server - Esri Dev Meetup - Charlotte, NC
PDF
Groovy Powered Clean Code
PPTX
Arrays, Structures And Enums
PPT
Ios - Introduction to platform & SDK
PDF
React: JSX and Top Level API
PDF
Dotnet unit 4
PDF
How to write clean & testable code without losing your mind
PPT
Groovy Introduction - JAX Germany - 2008
PDF
React Native custom components
CONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptx
C++ Programming
OOP-Lecture-05 (Constructor_Destructor).pptx
Presentation1 password
Vb.net Experiment with Example
Introduction To Google Android (Ft Rohan Bomle)
iOS,From Development to Distribution
Oop concept in c++ by MUhammed Thanveer Melayi
Flutter Festival IIT Goa: Session 1
• GUI design using drag and drop feature of IDE(Net beans), • File IO
Front End Development: The Important Parts
Android Development w/ ArcGIS Server - Esri Dev Meetup - Charlotte, NC
Groovy Powered Clean Code
Arrays, Structures And Enums
Ios - Introduction to platform & SDK
React: JSX and Top Level API
Dotnet unit 4
How to write clean & testable code without losing your mind
Groovy Introduction - JAX Germany - 2008
React Native custom components
Ad

Recently uploaded (20)

PPTX
Patient Appointment Booking in Odoo with online payment
PPTX
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
PDF
Autodesk AutoCAD Crack Free Download 2025
PDF
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
PDF
Visual explanation of Dijkstra's Algorithm using Python
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PPTX
Oracle Fusion HCM Cloud Demo for Beginners
PDF
AI/ML Infra Meetup | LLM Agents and Implementation Challenges
PPTX
Trending Python Topics for Data Visualization in 2025
PPTX
Computer Software and OS of computer science of grade 11.pptx
DOCX
How to Use SharePoint as an ISO-Compliant Document Management System
PDF
CCleaner 6.39.11548 Crack 2025 License Key
DOCX
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PDF
Time Tracking Features That Teams and Organizations Actually Need
PDF
AI Guide for Business Growth - Arna Softech
PDF
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
PPTX
Advanced SystemCare Ultimate Crack + Portable (2025)
PDF
Microsoft Office 365 Crack Download Free
PPTX
assetexplorer- product-overview - presentation
Patient Appointment Booking in Odoo with online payment
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
Autodesk AutoCAD Crack Free Download 2025
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
Visual explanation of Dijkstra's Algorithm using Python
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
Oracle Fusion HCM Cloud Demo for Beginners
AI/ML Infra Meetup | LLM Agents and Implementation Challenges
Trending Python Topics for Data Visualization in 2025
Computer Software and OS of computer science of grade 11.pptx
How to Use SharePoint as an ISO-Compliant Document Management System
CCleaner 6.39.11548 Crack 2025 License Key
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
Why Generative AI is the Future of Content, Code & Creativity?
Time Tracking Features That Teams and Organizations Actually Need
AI Guide for Business Growth - Arna Softech
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
Advanced SystemCare Ultimate Crack + Portable (2025)
Microsoft Office 365 Crack Download Free
assetexplorer- product-overview - presentation
Ad

Flutter_CharbelAkiki.pdf

  • 1. FLUTTER Presented by: Charbel Akiki, Lebanon 2023 Computer and Communication Engineering Student at Notre Dame University, Lebanon. Intern with AIIHC International Ltd. Supervisor: Ramzi El Feghali August-November 2023
  • 2. AIIHC International Ltd. 2023 WHAT IS FLUTTER? Based on Dart Used for User Interface in App development Supports development for both android and IOS High performance framework
  • 3. AIIHC International Ltd. 2023  Large repository of packages and libraries  Unique code base for all platforms  Fewer testing required  Easy customization  Fast development  Hot Reload feature ADVANTAGES
  • 4. AIIHC International Ltd. 2023 DISADVANTAGES  Dart mastery required  UI and logic are intermixed  Can be overwhelming for coding beginners  Packages are user-developed
  • 5. AIIHC International Ltd. 2023 FLUTTER DOWNLOAD HEAD TO FLUTTER.COM DOWNLOAD GIT, ANDROID STUDIO AND VS CODE DOWNLOAD FLUTTER SDK PACKAGES
  • 6. AIIHC International Ltd. 2023 HOW TO CREATE A FLUTTER PROJECT? Method 1: Through the Terminal (Command Prompt or PowerShell) Method 2: Through VS Code directly
  • 7. AIIHC International Ltd. 2023 FLUTTER PROJECT
  • 8. AIIHC International Ltd. 2023 BASICS OF DART
  • 9. AIIHC International Ltd. 2023 KEYWORDS
  • 10. AIIHC International Ltd. 2023 EXAMPLES var value = true; final x = null; const y = 5;
  • 11. AIIHC International Ltd. 2023 DATA TYPES Integers Doubles Strings Booleans Lists Sets Maps Null
  • 12. AIIHC International Ltd. 2023 EXAMPLES  final String x = ‘Hello’;  const Int y = 5;  const List L = [‘a’,’b’,’c’];
  • 13. AIIHC International Ltd. 2023 OPERATORS Arithmetic (+, -, *, /, ~/, % ) Increment and decrement (x++, ++x, x--, --x) Equality and relational (==, !=, <, >, <=, >= ) Type checking and casting (is, is! ) Logical operators (!, ||, &&) Null-safe and null-aware (??, ??=, ?.)
  • 14. AIIHC International Ltd. 2023 EXAMPLES var x = 1 + 1; 2 X++; 3 Print(x==3) true X is int  true Print( x==3 && x <2)  false
  • 15. AIIHC International Ltd. 2023 VARIABLES  Constants (final, const)  Dynamic (No assigned value)  Regular (can be of any data type)
  • 16. AIIHC International Ltd. 2023 EXAMPLES  Final Int x = 5;  Constant  Var x;  Dynamic  Var Int x = 5;  Regular Variable
  • 17. AIIHC International Ltd. 2023 FAMILY OF LISTS  Lists [elements]  Sets {unique elements}  Maps {keys: elements}
  • 18. AIIHC International Ltd. 2023 EXAMPLES  List <String> names = [‘joe’, ‘joe’, ’mike’];  Set <Int> numbers = {1, 2, 3};  Map <int, String> books = {1: ‘Book1’, 2: ‘Book2’};
  • 19. AIIHC International Ltd. 2023 LOOPS Dart supports for , while and do…while loops: for (var i = 1 ; i <= 10; i+ +){…} 1. Creates variable i of type int equal to 1 2. Checks condition (i=1<=10)  enter body or exit loop 3. Execute body 4. Increment i by 1 5. Repeat from step 2
  • 20. AIIHC International Ltd. 2023 EXAMPLES Var I = 1; While(I <=10){… i++} Do{…}while(I<=10) does the loop body at least once then checks condition
  • 21. AIIHC International Ltd. 2023 CONDITIONS A decision-making block evaluates a condition before the instructions are executed. Dart supports If, If..else and switch statements.  If(x==1){…} Else if(x==2}{…} Else{…}  Switch(x){ Case 1: //if x==1 … Break; Case 2: … Break;}
  • 22. AIIHC International Ltd. 2023 Properties:  Return Value  Name  Parameters  Body FUNCTIONS
  • 23. AIIHC International Ltd. 2023 FUNCTIONS SYNTAX String getFullName(String firstName = ‘Charbel’, [String? lastName]’){ return ‘$firstName $lastName’; }
  • 24. AIIHC International Ltd. 2023 OBJECT ORIENTED PROGRAMMING
  • 25. AIIHC International Ltd. 2023 CLASSES A class is a blueprint for creating objects, it is a grouping of various functionalities of a certain object, it can have many features such as methods, properties, constructors and instances. class Person { final String name;  Property Person(this.name);  Constructor void func(){  Method Print(‘this.name’); } } final guy = Person(‘John’);  Instance of class Person guy.func()  prints ‘John’
  • 26. AIIHC International Ltd. 2023 INHERITANCE Used to transfer a parent class properties to its child: Class Man extends Person{ final bool beard; Man(super.name, this.beard); }
  • 27. AIIHC International Ltd. 2023 ABSTRACT CLASSES Used to create classes that are not meant to be instantiated: abstract class Person{…}  Cannot make a Person Object  Can create an extended Man class from Person
  • 28. AIIHC International Ltd. 2023 FACTORY CONSTRUCTOR S  Used to facilitate the instantiation of similar instances (that have same property) Class Person{ final string name; Person(this.name); factory Person.FactoryConstructor() => Person(‘Joe’) } var guy = Person.FactoryConstructor(); Print(guy.name)  ‘joe’
  • 29. AIIHC International Ltd. 2023 CUSTOM OPERATORS Class Person{ … @override bool operator==(covariant Person other) =>other.name == name; } Final guy1 = Person(‘joe’); Final guy2 = Person(‘rogan’); Print(guy1 == guy2)  false
  • 30. AIIHC International Ltd. 2023 WIDGETS
  • 31. AIIHC International Ltd. 2023 WIDGETS  Basis of Flutter UI  Classes by nature (properties, methods etc…)  Widget Complexity  Countless usages
  • 32. AIIHC International Ltd. 2023 WIDGET TYPES  Platform Specific  Layout  State Maintenance  Basic
  • 33. AIIHC International Ltd. 2023 PLATFORM SPECIFIC WIDGETS  Material Widgets: Android (Scaffold, AppBar etc…)  Cupertino: IOS (CupertinoPageScaffold, CupertinoButton etc…)
  • 34. AIIHC International Ltd. 2023 LAYOUT WIDGETS  Center  Row  Column  Container  SizedBox
  • 35. AIIHC International Ltd. 2023 EXAMPLE OF USING LAYOUT WIDGETS TO MAKE A TABLE OF WIDGETS Scaffold( body: Container( child: Row( children: [Widget1(),Widget2()]; ) ), Container( child: Row( children: [Widget3(),Widget4()]; ) ) ) Widget1 Widget2 Widget3 Widget4
  • 36. AIIHC International Ltd. 2023 STATE MAINTENANCE WIDGETS  Stateful (Reactive, allows for auto re- rendering)  Stateless (non-reactive)
  • 37. AIIHC International Ltd. 2023 SOME BASIC WIDGETS  Text(): body: Text(text: ‘Hello World’, style: TextStyle(fontstyle: FontStyle.italic))  Image(): body: Image.network(image: ’https://…’, height: 200)  Icon(): body: Icon(Icons.email)
  • 38. AIIHC International Ltd. 2023 SAMPLE CODE
  • 40. AIIHC International Ltd. 2023 SOME USEFUL PACKAGES http Dio Dio_cookie_manager
  • 41. AIIHC International Ltd. 2023 HOW TO ADD PACKAGES  Head to pub.dev  In the pubspec.yaml file, under dependencies copy and paste the name and version of the package.  Import ‘package:package_name/package _name.dart
  • 42. AIIHC International Ltd. 2023 THANK YOU FOR YOUR TIME