SlideShare a Scribd company logo
ANGULAR ROMA
Dart Flutter
May the Fabio be with you
Flutter(is not another Ionic)
Un nuovo framework per app mobile by
Google.
Lorenzo Franceschini
Flutter
Dart
Flutter è basato sul linguaggio Dart:
● JIT (hot-reload - cicli di sviluppo rapidi) e AOT
(predicibile - native ARM code - avvio ed esecuzione
veloce)
● Multiple Runtime Environments: Transpila in
JavaScript (Favorisce il riuso) ha un VM per essere
eseguito da command line e compila in machine code
● Thread detti "isolati" non condividono risorse
● Funzioni critiche: eseguite fino al completamento
● Open Source e standard ECMA
Lorenzo Franceschini
Flutter
Dart
Dart:
Lorenzo Franceschini
void main() {
print(greetings(saluto: 'Ciao', cb: getName));
}
// Ho il concetto di Funzioni First Class Object
String getName() {
return 'Lorenzo';
}
// Named arguments: devono essere racchiusi tra graffe
String greetings({Function cb, String saluto}) {
return '$saluto, ${cb()}!';
}
Flutter
Dart
Dart:
● Ogni valore ha un tipo e ogni variabile è del tipo della
referenza in memoria
● Tutto, proprio tutto è un OGGETTO
● Il tipo è opzionale (type inference)
● Supporto dei Generics, Funzioni first class
● Zero constructor free a meno di non dichiararlo
● Future e Async
● https://www.dartlang.org/guides/language/effective-d
art/design
● https://www.dartlang.org/guides/language/language-
tour
● https://pub.dartlang.org/
Lorenzo Franceschini
Flutter
Dart
Flutter:
● Reactive Framework
● Widgets pronti all'uso
● Hot Reload (sia su emulatore che device reale)
● Il tipo è opzionale (type inference)
● Fast 2D Rendering Engine
● Dev Tools (Inspector, Code Suggestion)
● Material Design
● Performance
● Multipiattaforma: one code base -> ARM code
● No Bridge
● https://flutter.io/
Lorenzo Franceschini
PHYSICS
GESTURES
ANIMATION
Flutter
Library
SCAFFOLD
Dart
Library
CUSTOM WIDGET
STATELESS WIDGET
Native
APP BAR
STATE WIDGET
MATERIALAPP
Lorenzo Franceschini
Dart:core Dart:collection
DART Programming Language
FLUTTER API
Dart:async
Dart:io
Dart:...
Create an App
E' possibile utilizzare la riga di
comando:
1. flutter doctor (per verificare)
2. flutter create --org me.com -i obj -a java
codemotionapp (oppure swift e kotlin)
3. flutter emulators (per lista emulatori)
4. flutter emulators --launch
apple_ios_simulator (o semplicemente
Apple)
5. flutter run (o flutter run -d 'iPhone X')
6. open ios/Runner.xcworkspace
Lorenzo Franceschini
Environment Cosa ci serve?
● SDK Flutter (include DART)
● XCode per sviluppo iOS
● Android Studio o in alternativa:
● Visual Studio Code
● IntelliJ
● relativi plugin Flutter e Dart
Lorenzo Franceschini
Environment
Lorenzo Franceschini
● Decomprimere Flutter
● Settare il path
● Installare Android Studio
● Installare i Plugin di Flutter e Dart
● flutter doctor --android-licenses
● Alt+Enter sul Widget e...
Flutter
Widget
Lorenzo Franceschini
Widget: descrizione di una parte
della UI
Immagine presa dal corso Udacity per Flutter
Lorenzo Franceschini
Immagine presa dal corso Udacity per Flutter
1
import 'package:flutter/material.dart';
// package: lib di terze parti, flutter: package
// material.dart: file
void main() => runApp(new CodemotionApp());
// main è obbligatoria!
class CodemotionApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Codemotion App',
home: new Scaffold(
body: new Center(
child: new Text('Hello Codemotion!!!')
)
)
);
}
}
Basic Steps
➔ Importiamo la libreria helper Material
➔ Definiamo la funzione main che ritorna
una runApp e istanzia la mia classe
➔ Creo la mia classe che fa l'override della
build di Widget
➔ Ritorno il mio scaffold dell'applicazione
➔ All'interno avrò vari elementi widget
Widget Tree
➔ Importiamo la libreria Materia e utilizziamo
il Widget Material
➔ Creiamo la funzione main che ritorna una
runApp e istanzia la mia classe
➔ Creo la mia classe che fa l'override della
build di Widget
➔ Ritorno il mio scaffold dell'applicazione
➔ All'interno avrò vari elementi
1
Scaffold
home: new Scaffold(
appBar: new AppBar(
centerTitle: true,
title: new Text('Codemotion App'),
leading: new Icon(Icons.code),
actions: <Widget>[
new IconButton(icon: new Icon(Icons.cloud),
onPressed: () => print('Ciao'))
],
),
body: new Center(
child: new Text('Hello Codemotion!!!')
)
)
➔ Creiamo una AppBar
➔ Con leading spostiamo il contenuto a sx
➔ Creiamo un pulsante con actions
➔
Links
Alcuni utili approfondimenti
https://github.com/flutter/flutter/issues/14382
https://hackernoon.com/why-flutter-uses-dart-dd635a054ebf
https://dartpad.dartlang.org/
Lorenzo Franceschini
https://material.io/tools/icons/?style=baseline
https://aqueduct.io/docs/tour/
https://pub.dartlang.org/
http://cogitas.net/flutter-ui-code-tutorial-mastering-row-colu
mn/
Questions?
Lorenzo Franceschini

More Related Content

PDF
I came, I saw, I GO! - Golangit meetup @ Codemotion Rome 2014
PPTX
Golang Introduzione
PPTX
Visual studio code
PDF
Html5 apps - GWT oriented
PDF
Android - Programmazione Avanzata
PPTX
Golang + AngulaJS on GCP
PDF
Alla scoperta del codice sorgente di Android
PDF
Conoscere Android per poterlo Programmare
I came, I saw, I GO! - Golangit meetup @ Codemotion Rome 2014
Golang Introduzione
Visual studio code
Html5 apps - GWT oriented
Android - Programmazione Avanzata
Golang + AngulaJS on GCP
Alla scoperta del codice sorgente di Android
Conoscere Android per poterlo Programmare

What's hot (8)

PPTX
What's new in Visual Studio 2019
PDF
I package Android
PDF
Android programming (ita)
PDF
Ecco gli strumenti necessari per sviluppare la tua App Android
PDF
Laboratorio Creare e pubblicare mobile apps per iOS e Android Configurazione ...
PDF
Creare PWA con Angular
PDF
Corso Android
PDF
Deno - L'anagramma di node
What's new in Visual Studio 2019
I package Android
Android programming (ita)
Ecco gli strumenti necessari per sviluppare la tua App Android
Laboratorio Creare e pubblicare mobile apps per iOS e Android Configurazione ...
Creare PWA con Angular
Corso Android
Deno - L'anagramma di node
Ad

Similar to Flutter (20)

PDF
Flutter: Google alla conquista del mobile multi piattaforma
PDF
Mobile Development: una introduzione per Web Developers
PDF
Federico Massi.it - Intro alle app mobile Cordova
PDF
MonoTouch, un anno dopo
PPTX
ios 8 - parte 1 - intro - ita
PDF
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
PDF
follow-app BOOTCAMP 3: Android
PDF
Programmazione mobile: ANDROID
PPTX
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
PPTX
Sviluppo di App cross-platform con Cordova e HTML5
PDF
FROM A TO C(HECK-IN): iOS e Swift Lab
PDF
Introduzione a node.js
PDF
Introduzione a Node.js
PDF
Smau milano 2012 arena social media davide-senatore
PDF
Tech webinar: iOS Get Started
PPTX
Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web ...
PPTX
Sviluppare applicazioni mobile native in html e java script
PPTX
INTRO TO XAMARIN
PDF
Crossdev sdk/tools: devil's deception - Luciano Colosio
PDF
Crossdev sdk/tools: devil's deception
Flutter: Google alla conquista del mobile multi piattaforma
Mobile Development: una introduzione per Web Developers
Federico Massi.it - Intro alle app mobile Cordova
MonoTouch, un anno dopo
ios 8 - parte 1 - intro - ita
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
follow-app BOOTCAMP 3: Android
Programmazione mobile: ANDROID
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Sviluppo di App cross-platform con Cordova e HTML5
FROM A TO C(HECK-IN): iOS e Swift Lab
Introduzione a node.js
Introduzione a Node.js
Smau milano 2012 arena social media davide-senatore
Tech webinar: iOS Get Started
Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web ...
Sviluppare applicazioni mobile native in html e java script
INTRO TO XAMARIN
Crossdev sdk/tools: devil's deception - Luciano Colosio
Crossdev sdk/tools: devil's deception
Ad

Flutter

  • 2. Dart Flutter May the Fabio be with you
  • 3. Flutter(is not another Ionic) Un nuovo framework per app mobile by Google. Lorenzo Franceschini
  • 4. Flutter Dart Flutter è basato sul linguaggio Dart: ● JIT (hot-reload - cicli di sviluppo rapidi) e AOT (predicibile - native ARM code - avvio ed esecuzione veloce) ● Multiple Runtime Environments: Transpila in JavaScript (Favorisce il riuso) ha un VM per essere eseguito da command line e compila in machine code ● Thread detti "isolati" non condividono risorse ● Funzioni critiche: eseguite fino al completamento ● Open Source e standard ECMA Lorenzo Franceschini
  • 5. Flutter Dart Dart: Lorenzo Franceschini void main() { print(greetings(saluto: 'Ciao', cb: getName)); } // Ho il concetto di Funzioni First Class Object String getName() { return 'Lorenzo'; } // Named arguments: devono essere racchiusi tra graffe String greetings({Function cb, String saluto}) { return '$saluto, ${cb()}!'; }
  • 6. Flutter Dart Dart: ● Ogni valore ha un tipo e ogni variabile è del tipo della referenza in memoria ● Tutto, proprio tutto è un OGGETTO ● Il tipo è opzionale (type inference) ● Supporto dei Generics, Funzioni first class ● Zero constructor free a meno di non dichiararlo ● Future e Async ● https://www.dartlang.org/guides/language/effective-d art/design ● https://www.dartlang.org/guides/language/language- tour ● https://pub.dartlang.org/ Lorenzo Franceschini
  • 7. Flutter Dart Flutter: ● Reactive Framework ● Widgets pronti all'uso ● Hot Reload (sia su emulatore che device reale) ● Il tipo è opzionale (type inference) ● Fast 2D Rendering Engine ● Dev Tools (Inspector, Code Suggestion) ● Material Design ● Performance ● Multipiattaforma: one code base -> ARM code ● No Bridge ● https://flutter.io/ Lorenzo Franceschini
  • 8. PHYSICS GESTURES ANIMATION Flutter Library SCAFFOLD Dart Library CUSTOM WIDGET STATELESS WIDGET Native APP BAR STATE WIDGET MATERIALAPP Lorenzo Franceschini Dart:core Dart:collection DART Programming Language FLUTTER API Dart:async Dart:io Dart:...
  • 9. Create an App E' possibile utilizzare la riga di comando: 1. flutter doctor (per verificare) 2. flutter create --org me.com -i obj -a java codemotionapp (oppure swift e kotlin) 3. flutter emulators (per lista emulatori) 4. flutter emulators --launch apple_ios_simulator (o semplicemente Apple) 5. flutter run (o flutter run -d 'iPhone X') 6. open ios/Runner.xcworkspace Lorenzo Franceschini
  • 10. Environment Cosa ci serve? ● SDK Flutter (include DART) ● XCode per sviluppo iOS ● Android Studio o in alternativa: ● Visual Studio Code ● IntelliJ ● relativi plugin Flutter e Dart Lorenzo Franceschini
  • 11. Environment Lorenzo Franceschini ● Decomprimere Flutter ● Settare il path ● Installare Android Studio ● Installare i Plugin di Flutter e Dart ● flutter doctor --android-licenses ● Alt+Enter sul Widget e...
  • 12. Flutter Widget Lorenzo Franceschini Widget: descrizione di una parte della UI Immagine presa dal corso Udacity per Flutter
  • 13. Lorenzo Franceschini Immagine presa dal corso Udacity per Flutter
  • 14. 1 import 'package:flutter/material.dart'; // package: lib di terze parti, flutter: package // material.dart: file void main() => runApp(new CodemotionApp()); // main è obbligatoria! class CodemotionApp extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( title: 'Codemotion App', home: new Scaffold( body: new Center( child: new Text('Hello Codemotion!!!') ) ) ); } } Basic Steps ➔ Importiamo la libreria helper Material ➔ Definiamo la funzione main che ritorna una runApp e istanzia la mia classe ➔ Creo la mia classe che fa l'override della build di Widget ➔ Ritorno il mio scaffold dell'applicazione ➔ All'interno avrò vari elementi widget
  • 15. Widget Tree ➔ Importiamo la libreria Materia e utilizziamo il Widget Material ➔ Creiamo la funzione main che ritorna una runApp e istanzia la mia classe ➔ Creo la mia classe che fa l'override della build di Widget ➔ Ritorno il mio scaffold dell'applicazione ➔ All'interno avrò vari elementi
  • 16. 1 Scaffold home: new Scaffold( appBar: new AppBar( centerTitle: true, title: new Text('Codemotion App'), leading: new Icon(Icons.code), actions: <Widget>[ new IconButton(icon: new Icon(Icons.cloud), onPressed: () => print('Ciao')) ], ), body: new Center( child: new Text('Hello Codemotion!!!') ) ) ➔ Creiamo una AppBar ➔ Con leading spostiamo il contenuto a sx ➔ Creiamo un pulsante con actions ➔
  • 17. Links Alcuni utili approfondimenti https://github.com/flutter/flutter/issues/14382 https://hackernoon.com/why-flutter-uses-dart-dd635a054ebf https://dartpad.dartlang.org/ Lorenzo Franceschini https://material.io/tools/icons/?style=baseline https://aqueduct.io/docs/tour/ https://pub.dartlang.org/ http://cogitas.net/flutter-ui-code-tutorial-mastering-row-colu mn/