Flutter’da GetX kullanımı oldukça basittir ve güçlü bir durum yönetimi, yönlendirme ve bağımlılık enjeksiyonu sağlar. Aşağıda, Flutter’da GetX ile temel kullanım örneğini bulabilirsin.
1. GetX Bağımlılığını Yüklemek
Öncelikle, get paketini pubspec.yaml dosyana eklemen gerekiyor:
dependencies:
flutter:
sdk: flutter
get: ^4.6.5 # GetX’in en son sürümünü kontrol et
Ardından terminalde flutter pub get komutunu çalıştırarak bağımlılığı indir.
2. GetX Controller Oluşturma
GetX, Controller sınıfı ile state management sağlar. Aşağıda bir controller sınıfı örneği:
import ‘package:get/get.dart’;
class CounterController extends GetxController {
var count = 0.obs; // ‘obs’ observable (değişkenin dinamik olarak izlenmesini sağlar)
void increment() {
count++;
}
void decrement() {
count–;
}
}
Burada, count değişkeni RxInt tipinde, yani reactive bir değişkendir. Bu, değeri değiştiğinde UI’nin otomatik olarak güncellenmesini sağlar.
3. GetX ile UI Güncelleme
UI üzerinde controller’ı nasıl kullanacağımıza bakalım:
import ‘package:flutter/material.dart’;
import ‘package:get/get.dart’;
import ‘counter_controller.dart’; // Daha önce oluşturduğumuz controller
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: ‘GetX Example’,
home: HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
// Controller’ı GetX ile bağlama
final CounterController counterController = Get.put(CounterController());
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(“GetX Example”),
),
body: Center(
child: Obx(() => // Obx widget’ı, observable değişkenlerin UI’yi güncellemesini sağlar
Text(
‘Count: ${counterController.count}’,
style: TextStyle(fontSize: 30),
),
),
),
floatingActionButton: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
FloatingActionButton(
onPressed: counterController.increment, // Artırma işlemi
child: Icon(Icons.add),
),
SizedBox(width: 20),
FloatingActionButton(
onPressed: counterController.decrement, // Azaltma işlemi
child: Icon(Icons.remove),
),
],
),
);
}
}
4. Navigasyon (Yönlendirme)
GetX, sayfalar arasında yönlendirme işlemleri için de kolay bir yöntem sunar. Yönlendirme işlemini şu şekilde gerçekleştirebilirsin:
Get.to(SecondScreen()); // Yeni sayfaya geçiş
Get.back(); // Önceki sayfaya geri dönme
5. GetX ile Bağımlılık Yönetimi
GetX ile bağımlılık yönetimi oldukça basittir. Örneğin, bir servis sınıfı eklemek istersen:
class ApiService extends GetxService {
Future<ApiService> init() async {
// Bağımlılıklarınız burada yüklenebilir
return this;
}
String fetchData() {
return “Veri alındı!”;
}
}
Daha sonra bunu şu şekilde kullanabilirsin:
final ApiService apiService = Get.put(ApiService());
print(apiService.fetchData());
6. GetX ile Global State Yönetimi
GetX, global state yönetimi için Get.put ve Get.find yöntemlerini kullanarak controller’ları her yerde erişilebilir hale getirir.
// Global controller erişimi
CounterController counterController = Get.find();
Sonuç
GetX, Flutter’da durumu yönetmek, sayfalar arasında geçiş yapmak ve bağımlılıkları yönetmek için basit ve etkili bir yöntem sunar. Yukarıdaki örnek, temel kullan
ım için güzel bir başlangıçtır. İleri düzey özellikler için GetX dokümantasyonuna göz atabilirsin: GetX Documentation.