Flutter – Android and iOS mobile applications framework

Flutter is created by Google as a framework for development of Android and iOS mobile (and desktop) applications with the same code-base (GitHub repository, install Flutter). It lets using Material Design and Cupertino (iOS-flavor) widgets with native performance. Flutter is free and open source, it is already used by Google, Alibaba and other companies and developers.

Flutter uses Dart as a programming language. Dart is created by Google as well, it is also open source (GitHub repository). Read more about Dart.

Packages

Flutter has many ready to use packages – libraries for particular purpose. To use a package – put package name (following with a colon : character) to the dependencies section of the pubspec.yaml and hit the Packages get link on the top of the editor (within AndroidStudio or IntelliJ IDEA with installed Dart and Flutter plugins):

dependencies:
  flutter:
    sdk: flutter
  flare_flutter:
  flutter_redux:

It’s also possible to upgrade packages – hit the Packages upgrade link on the top of the editor with an open pubspec.yaml file (within AndroidStudio or IntelliJ IDEA with installed Dart and Flutter plugins).

Read more details about using packages.

Some packages, which can be useful to be aware of in the beginning

  • Animation
  • Databases and storages
    • redux – Redux for Dart using generics for typed State.
    • firebase_database – plugin for Firebase Database, a cloud-hosted NoSQL database with realtime data syncing across Android and iOS clients, and offline access.
    • flutter_redux – easy operate with Redux data storage from widgets.
  • Reactive programming
    • observable – is a way to be notified of a continuous stream of events over time. It extends the Stream class.
    • rxdart –  RxDart is a reactive functional programming library for Google Dart, based on ReactiveX. It also includes Observables, which as well extends the Stream class.
  • Immutable programming
    • built_value – value types with builders, Dart classes as enums, and serialization.

Overview

In Flutter all elements are widgets . Layout is build in declarative way. Simplest program to run on mobile:

import 'package:flutter/material.dart';

void main() => runApp(Text('Some text', textDirection: TextDirection.ltr));

However Flutter has number of libraries and components with ready to use widgets and logic. For example:

  • MaterialApp is a widget, which provides an application, that uses material design.
  • AppBar is a widget, which consists of a toolbar and optionally other widgets, e.g.  TabBar.
  • Scaffold is  a widget, which provides a default banner, background color, and has API for adding drawers, snack bars, and bottom sheets.

More easy to extend application would be like this:

import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
  title: 'My Application',
  home: Scaffold(
    appBar: AppBar(title: Text('My Title')),
    body: Center(child:Text('Some text')))
  )
);

Some resources

PS: 4th of December 2018, in the day I posted this article, Flutter 1.0 was released (coincidence though). Google ran Flutter Live event – almost 5 hours of presentation about Flutter and its components. Flare was also launched same day – vector design and animation tool, supporting Flutter. Square SDKs integrate payments into Flutter apps – providing support for Square Reads and Square In-App Payments.

Facebooktwittergoogle_plusredditpinterestlinkedintumblrmail

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.