# Gemini CLI ile Flutter Projelerinde Verimli Çalışma

Adres: https://agentvera.dev/blog/gemini-cli-ile-flutter/ · Yayın: 2026-11-01

Gemini CLI’yı Flutter projesinde etkin kullanın: GEMINI.md kurulumu, test odaklı çalışma döngüsü, sık hatalar ve paralel ajan ipuçları rehberi.

**Kısaca:**

- Gemini CLI, Flutter projesinde widget, state yönetimi ve test görevlerini küçük adımlarla güvenle ilerletebilir.
- GEMINI.md dosyasına Flutter’a özel komutlar ve kurallar koymak ajanın bağlamını ciddi ölçüde iyileştirir.
- Her adımdan sonra flutter test ve flutter analyze çalıştırıp diff’i okumak hataları erken yakalar.

Gemini CLI, Flutter projenizin kök dizininde `gemini` komutuyla başlar; proje dosyalarını okuyup Dart, widget ağacı, state yönetimi ve testler üzerinde değişiklik yapar. Ajanın Flutter işlerinde tutarlı kalması için proje köküne iyi bir GEMINI.md koymak ve her adımdan sonra `flutter analyze` ile `flutter test` çalıştırmak gerekir; temel kullanım için [Gemini CLI](/ajanlar/gemini-cli/) sayfasına da göz atabilirsiniz. Daha geniş bir adım adım rehber için [Gemini CLI nasıl kullanılır? Adım adım rehber](/blog/gemini-cli-nasil-kullanilir/) yazısını inceleyebilirsiniz. Bu rehber, Flutter bilen bir geliştiricinin terminal ajanını güvenle kullanması için pratik akışı anlatır.

## Neden Gemini CLI Flutter işine uygun

Flutter projeleri genellikle `lib/` altında hem UI hem iş mantığını aynı dilde (Dart) barındırır. Gemini CLI bu bütünlüğü kullanarak bir widget değişikliğini Provider/Riverpod/Bloc katmanına kadar tek seferde yayabilir; örneğin bir model alanı eklediğinde hem model dosyasını hem UI’daki kullanımını hem de ilgili testi birlikte günceller. Dart’ın statik tipleri sayesinde `flutter analyze` hataları hızlıca yüzeye çıkar ve ajan hata mesajına göre kendini düzeltebilir; bu, dinamik dillerdeki ajan belirsizliğinden daha kontrollü bir döngü sunar.

Flutter’ın hot reload ve test altyapısı küçük adımlarla ilerleyen ajan modeline çok uygundur. Ajan bir widget’ta değişiklik yaptığında, `flutter test` tüm testleri saniyeler içinde koşar; böylece kod üretim kalitesi geri bildirim döngüsü kısalır. Ayrıca Flutter projelerinde widget, business logic ve platform kanalı kodları aynı repository’de olduğu için ajan tüm katmanları birlikte görebilir; bu, bağlam kaybını azaltır. Terminal ajanı, platform kanalları gibi dağınık dosyaları da proje bağlamında okuyabildiği için Android/iOS tarafındaki karşılıkları bulmada iyi bir başlangıçtır.

## Flutter projesini ajan için hazırlama

Ajanın projeyi doğru anlaması için kök dizine `GEMINI.md` ekleyin. Dosya; commit’lenebilir, projeye özel komutları ve kuralları içermeli. Flutter projesinde mutlaka build, test ve lint komutlarını açıkça yazın; klasör yapısını ve state yönetimi tercihini de belirtin. Ajan bu dosyayı her görevin başında okur; talimatlar netleştikçe gereksiz sorular azalır ve ajan doğrudan işe odaklanır.

Aşağıdaki örnek, orta ölçekli bir Flutter uygulaması için işe yarar:

```markdown
# GEMINI.md

## Komutlar
- Bağımlılıklar: `flutter pub get`
- Test: `flutter test`
- Lint: `flutter analyze`
- Debug build: `flutter build apk --debug`
- Format: `dart format lib test`

## Klasör düzeni
- `lib/features/<feature>/models`: veri sınıfları
- `lib/features/<feature>/providers`: Riverpod sağlayıcıları
- `lib/features/<feature>/screens`: ekran widget'ları
- `lib/shared/widgets`: ortak widget'lar
- `test/features/<feature>/`: test dosyaları

## Flutter kuralları
- State yönetimi için Riverpod kullan; `FutureProvider` async işlerde tercih edilir
- Widget'lar tek amaçlı olsun; bir build metodu 200 satırı geçmesin
- Renk, boyut ve padding gibi değerleri `ThemeData` içinde tanımla, magic number kullanma
- Platform kanallarında hata ve null yönetimi şart; `MethodChannel` adlarını sabit olarak yaz
- Widget testlerinde animasyon veya timer varsa `pumpAndSettle` yerine `tester.pump(Duration)` kullan
```

Bu dosyayı güncelledikçe ajanın davranışı da değişir; kurallar kısa ve ölçülebilir olmalı, genel cümlelerden kaçının. Örneğin "testleri yaz" yerine "her provider için birim testi, her ekran için bir widget testi ekle" demek daha işe yarar. Ayrıca `analysis_options.yaml` içindeki mevcut lint kurallarını da GEMINI.md’de özetlemek, ajanın `flutter analyze` çıktısındaki uyarıları önceden hesaba katmasını sağlar.

## Çalışma döngüsü: planla, küçük adımlar, testleri koş, diff’i incele

Tek büyük istek yerine görevi üç-beş dosyayla sınırlı parçalara bölün. Önce plan isteyin, sonra planı adım adım uygulamasını isteyin; her adımdan sonra kendiniz `flutter analyze` ve `flutter test` çalıştırın. Ajan bittiğinde `git diff` ile değişiklikleri okuyun; Flutter’a özel `build` hatalarını, async `context` kullanımını ve platform dosyalarını ayrıca gözden geçirin.

Örnek Flutter görev promptları:

- 'Riverpod ile `CartProvider` sınıfını oluştur; `CartItem` modelini `equatable` kullanarak yaz, birim testini `test/features/cart/cart_provider_test.dart` altına ekle.'
- '`ProductListScreen` widget’ını `ConsumerWidget` olarak güncelle; yükleme durumunda `CircularProgressIndicator`, hata durumunda `SnackBar` göster.'
- 'Mevcut `login` butonuna debounce ekle; `TextFormField` validasyonlarını Türkçe hata mesajlarıyla güncelle, test dosyasını da yaz.'
- 'Bir platform kanal servisi yaz: `MethodChannel('com.example.app/battery')` ile pil seviyesini Android/iOS’tan al, Dart tarafında `BatteryService` sınıfı ile soyutla.'
- '`flutter test` çalıştır ve kırık testleri sırayla düzelt; her düzeltmeden sonra sadece ilgili testi koş.'

Prompta net dosya yolu ve beklenen testi vermek, ajanın Flutter projesinde dağılmasını önler. Eğer ajan kararsız kalırsa, "önce dosyanın mevcut halini göster, ardından değişiklik planını listele" diyerek süreci şeffaflaştırın. Daha etkili prompt kalıpları için [Kodlama ajanları için prompt nasıl yazılır?](/blog/kodlama-ajanlari-icin-prompt-yazmak/) rehberine göz atın.

## İyi çalıştığı ve dikkat edilmesi gereken yerler

Ajan; widget refactor, model/provider ekleme, test yazma ve basit platform kanalı kodları gibi görevlerde hızlıdır. Buna karşın Flutter’a özgü bazı tuzaklarda dikkatli inceleme gerekir.

| Görev | Ajanın güçlü yönü | Yakın takip noktası |
| --- | --- | --- |
| Widget refactor ve küçük UI değişiklikleri | Mevcut widget ağacını okur, temiz şekilde günceller | `BuildContext` async gap sonrası kullanımı; `use_build_context_synchronously` lint |
| Provider/Riverpod/Bloc sınıfları ve testleri | State geçişlerini tutarlı modeller | `freezed`, `json_serializable` gibi üretilen kodlar için `build_runner` çalıştırmayı atlayabilir |
| Platform kanalları (MethodChannel) | Dart, Kotlin ve Swift tarafındaki basit eşleşmeleri yazar | Channel adı tutarsızlığı, Android/iOS yapılandırma dosyalarına gereksiz dokunma |
| Widget testleri | Test iskeletini hızlı kurar | Animasyon/timer’larda `pumpAndSettle` kilitlenebilir; `tester.pump(Duration)` tercih edin |

Flutter’da en sık hata; ajanın platform kanallarında Android/iOS tarafını yazarken Gradle, Info.plist veya minimum SDK değerlerini değiştirmesidir. Bu dosyaları mutlaka diff’te okuyun; yalnızca Dart tarafından emin olun. Ayrıca ajan bazen `BuildContext`'i async bir fonksiyonun `await`'inden sonra kullanmaya çalışır; bu, lint uyarısıyla yakalanır ama runtime’da ciddi sorunlara yol açabilir. State yönetimi kütüphanelerinde `dispose` çağrılarını atlamak veya `ref.watch` ile `ref.read` karıştırmak da yaygındır. Bu yüzden her ajan çıktısında `flutter analyze` çalıştırmadan commit yapmayın.

## Flutter’da test ve doğrulama

Ajanın yazdığı kodu kabul etmeden önce sıralı doğrulama yapın. Önce `flutter analyze` ile statik analiz hatalarına bakın; Dart’ın tip sistemi, ajanın gözden kaçırdığı `null` veya async `context` hatalarını yakalar. Ardından `flutter test` çalıştırın; hata varsa yalnızca ilgili testi çalıştırıp ajanın hata mesajını okumasını sağlayın. `flutter test test/features/cart/cart_provider_test.dart` gibi tek dosya testi, döngüyü hızlandırır. Widget testlerinde `pump` kullanımı ve animasyon süreleri konusunda net kural vermek ajanı yanlış `pumpAndSettle` varsayımlarından korur.

Platform kanallarını test ederken sahte `MethodChannel` handler’ı yazmak zordur; bu bölümde `flutter test` yerine ayrı bir entegrasyon testi dosyası isteyin ve `TestWidgetsFlutterBinding` kullanmasını belirtin. Altın (golden) testleri eklemek, ajanın UI değişikliklerini beklenmedik şekilde bozmasını engeller; bu tür testleri GEMINI.md’de zorunlu kılabilirsiniz. Ajanın ürettiği testleri asla körlemesine kabul etmeyin; testin gerçekten davranışı doğruladığını ve boş geçmediğini kontrol edin. Gerekirse ajanın yazdığı testi kendiniz çalıştırıp başarısız olacağı bir durumu simüle edin; bu, test kalitesini ölçmenin en hızlı yoludur.

## Tek Flutter projesinde birden çok ajanı AgentVera ile çalıştırma

AgentVera; Gemini CLI dahil birçok terminal ajanını tek pencerede, her birini kendi gerçek terminal panelinde yan yana çalıştırır. Flutter projesinde biri UI refactor, diğeri Riverpod testleri, üçüncüsü platform kanalı üzerinde çalışırken her ajanı ayrı git worktree içinde çalıştırmak dosya çakışmalarını önler. Ajanın turu bittiğinde otomatik kod incelemesi yapan ikinci model, bulguları dosya:satır olarak verir; bu özellikle platform kanallarında Android/iOS tarafındaki hataları Flutter geliştiricisi için hızlıca yakalar. Ajan başına token bütçeleri de proje boyunca kullanımı kontrol altında tutar; böylece büyük Flutter görevleri gözlemlenebilir kalır.

## Özet

Gemini CLI’yı Flutter projesinde etkin kullanmak için net bir GEMINI.md, küçük adımlı görevler ve her değişiklikten sonra `flutter analyze` ile `flutter test` doğrulaması yeterlidir. Platform dosyalarını diff’te okuyun, testleri kendiniz de koşun ve ajanın önerdiği değişiklikleri bağlam içinde değerlendirin. Bu disiplinle ajan, Flutter geliştirme hızını artırır; karmaşık platform entegrasyonlarında bile gözden geçirme alışkanlığıyla güvenli kalırsınız.

## Sık sorulanlar

**Gemini CLI Flutter projelerinde nasıl başlatılır?** Flutter projesinin kök dizininde terminalden gemini komutunu çalıştırarak başlayabilirsiniz. İlk çalıştırmada proje bağlamını okur ve GEMINI.md dosyanızdaki talimatları izler. Başlamadan önce flutter pub get ile bağımlılıkları kurmak iyi olur.

**Gemini CLI için GEMINI.md dosyasına Flutter ile ilgili neler yazılmalı?** Build, test ve lint komutlarını (flutter build, flutter test, flutter analyze) ve klasör düzenini yazmalısınız. State yönetimi tercihini, widget boyut sınırlarını, platform kanal kurallarını ve test stratejisini kısa maddeler halinde ekleyin.

**Gemini CLI Flutter’da hangi görevlerde güvenilir, hangilerinde dikkat edilmeli?** Widget refactor, model/provider ekleme, test yazma gibi Dart tarafındaki görevlerde iyi çalışır. Platform kanalları, Gradle, Info.plist gibi Android/iOS yapılandırma dosyalarında el ile inceleme şarttır.

**Gemini CLI ile Flutter test döngüsü nasıl kurulur?** Her ajan çıktısından sonra önce flutter analyze, sonra flutter test çalıştırın. Kırık testi tek dosya olarak ajanla paylaşın ve düzeltme isteyin; ardından diff’i okuyarak platform dosyalarını kontrol edin.

---

**AgentVera hakkında.** AgentVera, Solviera Teknoloji tarafından geliştirilen macOS, Windows ve Linux masaüstü uygulamasıdır. 18 yapay zeka kodlama ajanını (Claude Code, Codex, Gemini CLI, Copilot, Cursor, Antigravity, opencode, Hermes, Qwen Code, Kimi Code, Kiro, Amp, Droid, Goose, Vibe, Crush, Aider, Cline) proje bazında, gerçek terminallerde ve kullanıcının kendi CLI kurulum ve girişleriyle yan yana çalıştırır. Ücretsiz planda sınırsız ajan vardır. İndir: https://agentvera.dev/indir/ · Fiyatlar: https://agentvera.dev/fiyatlar/
