Apa Itu Flutter?
Flutter adalah framework open-source yang dikembangkan oleh Google untuk membangun aplikasi mobile, web, dan desktop dari satu basis kode. Flutter menggunakan bahasa pemrograman Dart dan menawarkan rendering UI yang cepat dan efisien dengan menggunakan engine Skia.
Keunggulan Flutter
Kode Satu Basis: Bisa digunakan untuk Android, iOS, Web, dan Desktop.
Hot Reload: Memungkinkan pengembang melihat perubahan kode secara langsung tanpa harus restart aplikasi.
UI Kustom & Animasi Halus: Menggunakan widget yang bisa dikustomisasi dengan mudah.
Performa Tinggi: Menggunakan rendering sendiri tanpa perlu menggunakan komponen asli (native components).
Struktur Dasar Aplikasi Flutter
Setiap aplikasi Flutter dimulai dengan fungsi main() yang menjalankan runApp(). Berikut contoh sederhana:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Halo Flutter!')),
body: Center(child: Text('Selamat datang di Flutter!')),
),
);
}
}
State Management di Flutter
State management adalah konsep untuk mengelola perubahan data di aplikasi. Ada dua jenis state dalam Flutter:
Stateless Widget: Widget yang tidak berubah setelah dibuat.
Stateful Widget: Widget yang dapat berubah ketika aplikasi berjalan.
Contoh Stateful Widget:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: CounterScreen(),
);
}
}
class CounterScreen extends StatefulWidget {
@override
_CounterScreenState createState() => _CounterScreenState();
}
class _CounterScreenState extends State<CounterScreen> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Counter App')),
body: Center(
child: Text(
'Counter: $_counter',
style: TextStyle(fontSize: 24),
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
child: Icon(Icons.add),
),
);
}
}
_Penjelasan Kode
StatelessWidget digunakan untuk bagian aplikasi yang tidak berubah, seperti MyApp().
StatefulWidget digunakan untuk CounterScreen, karena nilai counter bisa berubah.
setState() digunakan untuk memperbarui tampilan saat tombol ditekan.
FloatingActionButton adalah tombol untuk menambah nilai counter.
_
State Management yang Lebih Kompleks
Flutter memiliki beberapa metode state management seperti:
Provider (Resmi dari Flutter)
Riverpod (Evolusi dari Provider)
Bloc (Business Logic Component)
GetX (Ringan dan simpel)
Contoh Menggunakan Provider
Tambahkan dependensi di pubspec.yaml:
dependencies:
flutter:
sdk: flutter
provider: ^6.0.0
Kode utama:
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
runApp(
ChangeNotifierProvider(
create: (context) => CounterProvider(),
child: MyApp(),
),
);
}
class CounterProvider extends ChangeNotifier {
int _counter = 0;
int get counter => _counter;
void increment() {
_counter++;
notifyListeners();
}
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: CounterScreen(),
);
}
}
class CounterScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final counterProvider = Provider.of<CounterProvider>(context);
return Scaffold(
appBar: AppBar(title: Text('Provider State Management')),
body: Center(
child: Text('Counter: ${counterProvider.counter}',
style: TextStyle(fontSize: 24)),
),
floatingActionButton: FloatingActionButton(
onPressed: counterProvider.increment,
child: Icon(Icons.add),
),
);
}
}
Penjelasan Kode Provider:
ChangeNotifier digunakan untuk mengelola state (CounterProvider).
notifyListeners() memberitahu widget yang terhubung untuk rebuild.
ChangeNotifierProvider membungkus MyApp() agar state bisa diakses di seluruh widget.
Provider.of(context) digunakan untuk membaca state di CounterScreen.
Kesimpulan
Flutter adalah framework yang powerful untuk membuat aplikasi lintas platform dengan performa tinggi. Dengan state management yang fleksibel, pengembang dapat mengelola data dengan lebih efektif. Untuk aplikasi skala kecil, StatefulWidget cukup digunakan. Namun, untuk skala besar, Provider, Riverpod, atau Bloc lebih disarankan.
๐ฅ Selamat mencoba Flutter dan happy coding! ๐
Top comments (0)