Flutter (perangkat lunak)

**Flutter** adalah sebuah kerangka kerja aplikasi seluler sumber terbuka yang diciptakan oleh Google. Flutter digunakan dalam pengembangan aplikasi untuk sistem operasi Android, iOS, Windows, Linux, MacOS, serta menjadi metode utama untuk membuat aplikasi Google Fuchsia. Flutter juga mendukung untuk pengembangan aplikasi berbasis web.

## Sejarah
Versi pertama Flutter dikenal sebagai "*Sky*" dan berjalan pada sistem operasi Android. Diresmikan pada perhelatan *Dart developer summit* tahun 2015, dengan tujuan untuk mampu merender grafis secara konsisten pada 120 bingkai per detik.

Flutter 1.0 dirilis pada tanggal 4 Desember 2018 di acara Flutter Live, yang menunjukkan versi "stabil" pertama dari Framework Flutter.

## Arsitektur
Komponen utama Flutter termasuk:
* *Dart Platform*
* *Flutter engine*

### ''Foundation library''
* Widget spesifik desain

### ''Dart Platform''
Flutter ditulis dengan bahasa pemograman Dart. Flutter berjalan di mesin virtual Dart yang dilengkapi mesin eksekusi Kompilasi tepat waktu (Inggris: *just-in-time*). Saat melakukan pemograman atau debugging aplikasi, Flutter menggunakan Kompilasi tepat waktu untuk melakukan "hot reload", yang dapat menambahkan hasil modifikasi kode langsung ke aplikasi yang sedang berjalan.

Versi rilis aplikasi Flutter dikompilasi dengan ahead-of-time (AOT) di Android dan iOS, memungkinkan kinerja tinggi Flutter di perangkat seluler menjadi mungkin.

### ''Flutter engine''
*Flutter engine*, ditulis terutama dengan bahasa pemrograman C++, memberikan dukungan rendering tingkat rendah menggunakan *library* grafik Skia milik Google. Selain itu, *flutter engine* juga berinteraksi dengan perkakas pengembangan perangkat lunak (*SDK*) spesifik-serambi (*platform-specific*) seperti yang disediakan oleh Android dan iOS.

### ''Foundation library''
*Foundation library*, ditulis dengan bahasa pemrograman Dart, menyediakan fungsi dan *class-class* dasar yang digunakan untuk membangun aplikasi menggunakan Flutter, seperti ''API'' untuk berkomunikasi dengan *engine*.

#### Widget
Desain antarmuka pengguna dalam Flutter melibatkan perakitan dan/atau pembuatan berbagai widget. Sebuah widget dalam Flutter mewakili deskripsi yang tetap dari bagian antarmuka pengguna; semua grafik, termasuk teks, bentuk, dan animasi dibuat menggunakan widget. Widget yang lebih kompleks dapat dibuat dengan memadukan widget-widget yang lebih sederhana.

### Widget spesifik-desain
*Framework* Flutter berisi dua set widget yang disesuaikan dengan bahasa desain tertenu. Widget ''Material Design'' menerapkan bahasa desain Google dengan nama yang sama, sedangkan widget 'Cupertino' meniru desain iOS milik Apple.



## Contoh Hello World
Berikut ini merupakan contoh aplikasi Hello World menggunakan Flutter.
```dart
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hello World App',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Hello World'),
        ),
        body: Center(
          child: Text('Hello World'),
        ),
      ),
    );
  }
}
```


## Referensi

## Pranala luar
* Situs resmi