DEV Community

Joenathan Haganta Ginting
Joenathan Haganta Ginting

Posted on

1 1 1 1 1

๐Ÿš€ Pengenalan Flutter: Dasar, State Management, dan Contoh Kode ๐ŸŽฏ

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!')),
      ),
    );
  }
}
Enter fullscreen mode Exit fullscreen mode

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),
      ),
    );
  }
}
Enter fullscreen mode Exit fullscreen mode

_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
Enter fullscreen mode Exit fullscreen mode

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),
      ),
    );
  }
}
Enter fullscreen mode Exit fullscreen mode

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! ๐Ÿš€

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

While many AI coding tools operate as simple command-response systems, Qodo Gen 1.0 represents the next generation: autonomous, multi-step problem-solving agents that work alongside you.

Read full post

Top comments (0)

Sentry image

See why 4M developers consider Sentry, โ€œnot bad.โ€

Fixing code doesnโ€™t have to be the worst part of your day. Learn how Sentry can help.

Learn more

๐Ÿ‘‹ Kindness is contagious

Please leave a โค๏ธ or a friendly comment on this post if you found it helpful!

Okay