Building Beautiful Apps Ahmed Abu Eldahab GDE Flutuer & Daru - - PowerPoint PPT Presentation

building beautiful apps
SMART_READER_LITE
LIVE PREVIEW

Building Beautiful Apps Ahmed Abu Eldahab GDE Flutuer & Daru - - PowerPoint PPT Presentation

Building Beautiful Apps Ahmed Abu Eldahab GDE Flutuer & Daru @dahabdev Tell me about you? Developers , Designers , Mac , Linux , Windows , Web , Mobile , Android , ios ? @dahabdev Agenda Context about Apps Native apps


slide-1
SLIDE 1

Ahmed Abu Eldahab GDE Flutuer & Daru @dahabdev

Building Beautiful Apps

slide-2
SLIDE 2

Tell me about you?

Developers , Designers , Mac , Linux , Windows , Web , Mobile , Android , ios ?

@dahabdev

slide-3
SLIDE 3

Agenda

  • Context about Apps

○ Native apps ○ Web apps ○ Hybrid apps

  • What’s flutter?
  • Who’s flutter for?
  • What makes flutter awesome?

○ Widgets ○ Performance ○ Rendering

  • Comments about flutter
  • Demo!
  • Thanks!
slide-4
SLIDE 4

Context about Apps

slide-5
SLIDE 5

Native apps (advantages)

  • Quality
  • Aspect Ratios
  • Speed
  • IDE
  • Standing on the shoulders of giants
  • Advanced UI Interactions
  • Native Look and Feel
  • Usability
  • New Features

They are Android(Java), Ios(Swift), Windows mobile(.net)

slide-6
SLIDE 6

Web apps (advantages)

  • Reduced Development Costs
  • Ease of Integration
  • Simplified Maintenance
  • Easy installation
  • Accessible anywhere
  • Easily customisable
  • Accessible for a range of devices
  • Easier to develop

Use web technologies to build an “app”

slide-7
SLIDE 7

Hybrid apps (advantages)

  • Reduced Development Costs
  • Improved UI/UX
  • Ease of Integration
  • Offline Support
  • Simplified Maintenance

Single code base that compiles natively

slide-8
SLIDE 8

What do users(client, end user, dev, designer) want?

  • Reduced Development Costs
  • Improved UI/UX
  • Ease of Integration
  • Offline Support
  • Simplified Maintenance
  • Quality
  • Speed
  • Standing on the shoulders of giants
  • Advanced UI Interactions

Single code base that compiles natively

?

slide-9
SLIDE 9

What If I told you that flutter has got!

  • Reduced Development Costs
  • Improved UI/UX
  • Ease of Integration
  • Offline Support
  • Simplified Maintenance
  • Quality
  • Speed
  • Standing on the shoulders of giants
  • Advanced UI Interactions

Single code base that compiles natively

slide-10
SLIDE 10

Flutuer is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase

slide-11
SLIDE 11

Who is Flutter for?

Designers converge on a brand-driven experience on Android and iOS Prototypers enjoy a high-fidelity and fast way to build working prototypes. Developers benefit from fantastic developer tools, an easy-to-use language, a rich set of widgets and great IDE support. Flutter frees up valuable time for working on features and delightful experiences.

slide-12
SLIDE 12

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

slide-13
SLIDE 13

Flutuer supporu many types of Animations

  • Tween
  • Hero
  • Sliver
  • Transform
  • FadeInWidget
  • Animation Builder
  • AnimatedOpacity
  • Physics-based animation

Beautiful Animations

slide-14
SLIDE 14

Fast

Brings the power of a games engine to user experience development 60fps, GPU accelerated Compiled to native machine code

slide-15
SLIDE 15

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

slide-16
SLIDE 16
slide-17
SLIDE 17

What makes Flutter unique?

  • Compiles to Native Code (ARM Binary code)
  • No reliance on OEM widgets
  • No bridge needed
  • No markup language (only Dart)
slide-18
SLIDE 18

Flutter offers a portable, high-quality UI toolkit, and a fast, expressive way to build native app UIs.

Key component of the Google Developer family

slide-19
SLIDE 19

Flutter Approach

Canvas Events Location Bluetooth Camera Sensors

Native ARM Binary Code

Services Platform Channels Flutter Widgets

Cupertino Material Design

slide-20
SLIDE 20

Flutter Architecture

slide-21
SLIDE 21

Flutter Architecture

slide-22
SLIDE 22
  • Language and Libraries
  • Packages manager https://pub.dev
  • Virtual machine
  • Compile to Javascript dart2js

Daru is a client-optimized language for fast apps on any platgorm! (Web - Desktop - Mobile - Embedded)?

slide-23
SLIDE 23
  • Sound type system
  • Tree Shaking
  • Rich core libraries
  • Multi-gen, lockless GC
slide-24
SLIDE 24
  • Single codebase for

Android and iOS

  • Rapid development cycles
  • Great tooling
slide-25
SLIDE 25

Design-oriented Development Flow

slide-26
SLIDE 26

What do you see here?

slide-27
SLIDE 27

Diagram the Layout

  • Look for rows and columns
  • Is there a grid?
  • Any overlapping elements?
  • Do we need tabs?
  • Padding, alignment or borders needed?
slide-28
SLIDE 28

Designing bottom up

slide-29
SLIDE 29

HTML/CSS Analogs in Flutter

var container = new Container( // grey box child: new Text( "Lorem ipsum", style: new TextStyle( fontSize: 24.0 fontWeight: FontWeight.w900, fontFamily: "Georgia", ), ), width: 320.0, height: 240.0, color: Colors.grey[300], ); <div class="greybox"> Lorem ipsum </div> .greybox { background-color: #e0e0e0; /* grey 300 */ width: 320px; height: 240px; font: 900 24px Georgia; }

slide-30
SLIDE 30

The Power of Widgets

slide-31
SLIDE 31

Everything is a Widget

slide-32
SLIDE 32

StatefulWidget vs. StatelessWidget

slide-33
SLIDE 33

Customizing and extending Widgets

Flutter’s Widget system was designed to be easily customizable Composition: Widgets are built out of smaller widgets that you can reuse and combine in novel ways to make custom widgets class RaisedButton extends StatelessWidget { ... }

slide-34
SLIDE 34

App Widget Material Widget Scaffold Widget Column Container Text Button Render Tree

Everything is a Widget

slide-35
SLIDE 35

https://flutter.dev/docs/reference/widgets

slide-36
SLIDE 36

https://flutter.dev/docs/reference/widgets

slide-37
SLIDE 37

Efficient Tooling

slide-38
SLIDE 38

$ flutter doctor

Checks your environment and displays a report to the terminal window

$ flutter upgrade

Updates both the Flutter SDK and your packages

slide-39
SLIDE 39

pubspec.yaml

name: flutter_project description: An amazing Flutter project using Firebase Auth dependencies: flutter: sdk: flutter firebase_auth: "^0.2.5"

slide-40
SLIDE 40

pubspec.yaml

name: flutter_project description: An amazing Flutter project using Firebase Auth dependencies: flutter: sdk: flutter firebase_auth: ">=0.1.2 <0.2.6"

slide-41
SLIDE 41

$ flutter packages get

Checks your environment and displays a report to the terminal window

$ flutter packages upgrade

Will retrieve the highest available version of the package

slide-42
SLIDE 42

$ flutter format

Automatically formats your code according to the Flutter-style

$ flutter analyze

Analyzes your code and help you find possible mistakes

slide-43
SLIDE 43

Hot Reload

Injecting updated source code files into the running Dart VM Stateful: App state is retained after a reload. Quickly iterate on a screen deeply nested in your app

slide-44
SLIDE 44

Dart Observatory

Statement-level single-stepping debugger and profiler Automatically running when you start your app using flutter run See which lines of code have executed Check out memory allocations Debug memory leaks & fragmentation

slide-45
SLIDE 45

Great looking and fast Widgets

slide-46
SLIDE 46

Goodbye, global layout system

new Center( child: new Text('Centered Text', style: textStyle), ) Local layouts: Every Widget defines it’s own layout. No need to tell the parent that it’s children are supposed to be centered.

slide-47
SLIDE 47
slide-48
SLIDE 48

IDE Support ?

slide-49
SLIDE 49

Flutter Showcase

https://flutter.dev/showcase & https://itsallwidgets.com

slide-50
SLIDE 50

Flutter Showcase

https://flutter.dev/showcase & https://itsallwidgets.com

slide-51
SLIDE 51

Flutter Showcase

https://flutter.dev/showcase & https://itsallwidgets.com

slide-52
SLIDE 52
slide-53
SLIDE 53

/Dahabdev