Flutter kini tidak hanya untuk mobile, melainkan juga web. Pada artikel ini, kita akan membahas cara menyiapkan proyek Flutter untuk target web, menyesuaikan UI agar responsif, serta men-deploy ke GitHub Pages.
1. Persiapan Project Flutter
Jika belum ada project, buat dulu:
flutter create flutter_web_demo
cd flutter_web_demo
Pastikan channel stable dan versi terbaru:
flutter upgrade
flutter config --enable-web
Perintah di atas menambahkan dukungan web ke SDK dan men-generate folder web/.
2. Menjalankan di Browser
Jalankan flutter run -d chrome untuk melihat aplikasi di Chrome. Flutter akan meng-compile ke JavaScript (Dart β JS) dan menyajikan index.html di folder build/web.
flutter run -d chrome
Jika ingin melihat hasil build tanpa server, cukup buka build/web/index.html di browser.
3. Responsif UI dengan MediaQuery & LayoutBuilder
Agar UI menyesuaikan ukuran layar, gunakan MediaQuery atau LayoutBuilder. Contoh sederhana menampilkan dua kolom pada lebar > 600px, satu kolom di bawahnya.
import 'package:flutter/material.dart';
class ResponsiveHome extends StatelessWidget {
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (context, constraints) {
if (constraints.maxWidth > 600) {
// Desktop / tablet layout
return Row(
children: [
Expanded(child: _menu()),
Expanded(child: _content()),
],
);
} else {
// Mobile layout
return Column(
children: [_menu(), _content()],
);
}
},
);
}
Widget _menu() => Container(color: Colors.blue, height: 200, child: Center(child: Text('Menu')));
Widget _content() => Container(color: Colors.green, height: 200, child: Center(child: Text('Konten')));
}
Gunakan widget ini sebagai home di MaterialApp.
4. Menyesuaikan Asset untuk Web
Folder web/ berisi index.html, favicon.png, dan manifest.json. Jika menambah asset (gambar, font), letakkan di assets/ dan daftarkan di pubspec.yaml seperti biasa. Flutter akan menyalin asset ke build/web/assets.
flutter:
assets:
- assets/logo.png
5. Build untuk Produksi
flutter build web --release
Hasil berada di build/web. Semua file statis dapat diβhost di GitHub Pages.
6. Deploy ke GitHub Pages dengan Jekyll
- Copy folder
build/webke repository root (atau folderdocs/). - Pastikan file
_config.ymlmemilikibaseurl: ""danurl: "https://ahsai.my.id". - Commit & push.
Contoh perintah (jalankan di root repo):
rm -rf docs && cp -r build/web docs
git add docs
git commit -m "feat: deploy Flutter Web ke GitHub Pages"
git push origin master
Setelah beberapa menit, aplikasi dapat diakses di https://ahsai.my.id/.
7. Tips Tambahan
- Lazy loading: gunakan
deferred asuntuk memuat modul besar hanya bila diperlukan. - SEO: tambahkan meta tag di
web/index.html(title, description, og:image) karena konten masih JavaScript. - CORS: pastikan API yang dipanggil mengizinkan origin
https://ahsai.my.id.
8. Ringkasan
Flutter Web memungkinkan menulis satu basis kode Dart untuk Android, iOS, dan Web. Dengan MediaQuery, LayoutBuilder, dan build release, Anda dapat menghasilkan aplikasi responsif yang mudah diβdeploy ke GitHub Pages.
Coba sendiri! Share ke sosial media dan tag @ahsai001