# Maguyva'da Dart: Flutter ve Dart uygulamaları için kod grafları

Canonical source: https://maguyva.ai/tr/languages/dart

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva, Dart'ı AST, sembol ve graf desteğiyle sunar; böylece yapay zeka ajanları Flutter ve Dart kodunda sınıfları, mixin'leri, uzantıları ve kurucuları izleyebilir.

## Destek anlık görüntüsü

- Katman: AST ve sembol desteği
- Programlama
- Uzantılar: .dart
- Sözdizimi farkında arama ve yapısal bağlam için gerçek AST ayrıştırması.
- Adlandırılmış semboller anlamsal aramayı ve çapraz referansı besler. İlişki çıkarımı etkinleştirildiğinde graf gezinmesi kullanılabilir.
- Bu dil, graf farkındalıklı aramaya semboller ve ilişkiler sağlar; desteklenen kenar türleri dilin yerel yapılarına göre değişir.
- Hem AST ayrıştırma hem de sembol çıkarma kullanılabilir.

## En uygun kullanım

- Widget'ların, durum sınıflarının, repoların ve servislerin birçok dosya boyunca birbirini çağırdığı Flutter uygulamaları.
- Başka yerde tanımlanmış türlere mixin'ler ve uzantı metotlarıyla davranış ekleyen Dart paketleri.
- Modellerini bir Flutter istemcisiyle paylaşan sunucu tarafı ve komut satırı Dart kodu.

## Ajan iş akışları

- Bir repo veya servis metodunun API'sini değiştirmeden önce tüm çağıranlarını bulmak.
- Bir arayüze üye eklemeden önce onu uygulayan sınıfları listelemek.
- Bir widget'taki dokunuşun ağ katmanına nasıl ulaştığını izlemek.

## Dart yüzeysel yapay zeka araçlarını nerede şaşırtır

Dart tek bir türü birkaç yapıya yayar. Bir sınıf tek bir taban sınıftan kalıtım alabilir, birkaç arayüzü uygulayabilir ve `with` ile mixin'lerden davranış katabilir. Uzantı metotları başka yerde tanımlanmış türlere üye ekler; adlandırılmış kurucular ve `factory` kurucuları ise gerçekte hangi sınıfın oluşturulduğunu gizler. Metin araması adları bulur, ama arkalarındaki yapıyı bulamaz.

Maguyva bu yapıyı ajana verir; böylece ajan bir değişikliği widget'tan bağımlı olduğu servise kadar izleyebilir.

## Maguyva Dart'tan neleri çıkarır

Maguyva `.dart` dosyalarını kapsar. Sınıflar, mixin'ler ve uzantılar tür olarak çıkarılır. `structural_search` içindeki `functions` hazır ayarı fonksiyonları, metotları, yerel fonksiyonları, lambda'ları ve üretici, `const` ve `factory` kurucuları kapsar. İmzalar isteğe bağlı konumsal ve adlandırılmış parametre gruplarını ve `static` üyeleri kaydeder; tanım adlarının sonundaki `?` ve `!` kaldırılır.

İçe aktarmalar `import`, `part` ve `library` yönergelerini normalleştirir ve `show`, `hide` ve `as` yan tümcelerini atar. `import 'package:http/http.dart' as http` sonrasındaki `http.get` gibi bir içe aktarma öneki üzerinden yapılan çağrı grafta kalır.

Alıcı türlemesi parametreleri, türü belirtilmiş ve ilklendirilmiş değişkenleri, getter'ları ve listeler, kümeler ve yinelenebilirler üzerindeki `for`-`in` döngülerini izler; `var` ve `dynamic` türlerini çıkarımsal kabul eder. Kalıtılan üyeler çözülürken `extends`, `implements` ve `with` yan tümceleri izlenir. Graf ayrıca örnekleme, tür başvuruları, okuma ve yazmalar ile istisna kenarlarını kaydeder.

## Örnek ajan istemleri

- "`CartRepository.addItem`'i kim çağırıyor ve hangi widget'lardan?" (`find_symbol`, ardından `dependency_search` incoming)
- "Hangi sınıflar `PaymentGateway`'i uyguluyor?" (`dependency_search`)
- "Ödeme düğmesinin ödeme API'sine nasıl ulaştığını izle." (`get_task_context`)

## Bilinen sınırlar

- Dart çekirdek kütüphanelerinden yaklaşık 200 ad ilişkilerden filtrelenir; aralarında `map`, `where` ve `forEach` gibi koleksiyon yardımcıları, `then` ve `listen` gibi `Future` ve `Stream` metotları ve `dart:` kütüphaneleri vardır. Bunlar için `text_pattern_search` kullanın.
- Dart imza düğümleri gövdeyi kardeş düğüm olarak tutar; bu yüzden `structural_search` sonuçlarında bir yerel fonksiyon veya lambda onu içeren çağrılabilir öğeyle çakışabilir, getter ve setter'lar da metot imzası olarak görünür.

## Sonraki adımlar

[Hızlı başlangıç](/tr/docs/quickstart) ile bir repo bağlayın, ardından destek matrisi için [uyumluluk sayfasına](/tr/docs/compatibility) bakın. Diğer mobil kod tabanları için [Kotlin rehberini](/tr/languages/kotlin) ve [Swift rehberini](/tr/languages/swift) okuyun.

## Motor ayrıntıları

- Dart desteği `.dart` dosyalarını kapsar. Sınıflar, mixin'ler ve uzantılar türdür; kurucular üretici, `const` ve `factory` biçimlerini içerir.
- İçe aktarmalar `import`, `part` ve `library` yönergelerini normalleştirir; içe aktarma öneki üzerinden yapılan çağrılar grafta kalır.
- Alıcı türlemesi parametreleri, değişkenleri, getter'ları ve `for`-`in` döngülerini izler; yaklaşık 200 çekirdek kütüphane adı ilişkilerden filtrelenir.

## Yararlı MCP giriş noktaları

- `find_symbol`: Tanıma ve başvurulara ihtiyaç duyduğunuzda bir widget, repo veya servis sınıfı için kullanın.
- `dependency_search`: Bir API'yi değiştirmeden önce çağıranları ve uygulayıcıları görmek için bir repo metodu veya arayüz üzerinde incoming geçişi kullanın.
- `get_task_context`: "Ödeme düğmesinin ödeme API'sine nasıl ulaştığını izle" gibi istemler için kullanın.
