# Dart dalam Maguyva: graf kod untuk aplikasi Flutter dan Dart

Canonical source: https://maguyva.ai/ms/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 menyokong Dart dengan AST, simbol dan graf, supaya ejen AI boleh menjejak kelas, mixin, sambungan dan pembina dalam kod Flutter dan Dart.

## Gambaran sokongan

- Peringkat: Sokongan AST dan simbol
- Pengaturcaraan
- Sambungan fail: .dart
- Penghuraian AST sebenar untuk carian sedar-sintaks dan konteks struktur.
- Simbol bernama menyokong carian semantik dan rujukan silang. Navigasi graf tersedia apabila pengekstrakan hubungan didayakan.
- Bahasa ini menyumbang simbol dan hubungan kepada carian berasaskan graf; jenis edge yang disokong berbeza mengikut binaan aslinya.
- Penghuraian AST dan pengekstrakan simbol kedua-duanya tersedia.

## Paling sesuai

- Aplikasi Flutter yang widget, kelas keadaan, repositori dan perkhidmatannya saling memanggil merentas banyak fail.
- Pakej Dart yang menambah tingkah laku melalui mixin dan kaedah sambungan pada jenis yang ditakrifkan di tempat lain.
- Kod Dart sisi pelayan dan baris arahan yang berkongsi model dengan klien Flutter.

## Aliran kerja ejen

- Mencari semua pemanggil kaedah repositori atau perkhidmatan sebelum mengubah API-nya.
- Menyenaraikan kelas yang melaksanakan sesuatu antara muka sebelum menambah ahli baharu.
- Menjejak bagaimana ketikan pada widget sampai ke lapisan rangkaian.

## Di mana Dart memerangkap alat AI yang cetek

Dart menyebarkan satu jenis kepada beberapa binaan. Sesebuah kelas boleh mewarisi daripada satu kelas asas, melaksanakan beberapa antara muka dan mencampurkan tingkah laku daripada mixin melalui `with`. Kaedah sambungan menambah ahli pada jenis yang ditakrifkan di tempat lain, manakala pembina bernama dan pembina `factory` menyembunyikan kelas mana yang sebenarnya dicipta. Carian teks menemui nama, bukan struktur di sebaliknya.

Maguyva memberikan struktur itu kepada ejen, supaya ejen boleh menjejak perubahan daripada widget hingga ke perkhidmatan yang menjadi sandarannya.

## Apa yang diekstrak oleh Maguyva daripada Dart

Maguyva merangkumi fail `.dart`. Kelas, mixin dan sambungan diekstrak sebagai jenis. Pratetap `functions` dalam `structural_search` merangkumi fungsi, kaedah, fungsi setempat, lambda serta pembina generatif, `const` dan `factory`. Tandatangan merekodkan kumpulan parameter kedudukan pilihan dan parameter bernama serta ahli `static`; akhiran `?` dan `!` dibuang daripada nama takrifan.

Import menormalkan arahan `import`, `part` dan `library`, serta membuang klausa `show`, `hide` dan `as`. Panggilan melalui awalan import, seperti `http.get` selepas `import 'package:http/http.dart' as http`, kekal dalam graf.

Penjenisan penerima menjejak parameter, pemboleh ubah yang berjenis dan yang diawalkan, getter, serta gelung `for`-`in` ke atas senarai, set dan iterable; `var` dan `dynamic` dianggap sebagai jenis inferens. Apabila ahli warisan diselesaikan, klausa `extends`, `implements` dan `with` turut diikuti. Graf juga merekodkan instansiasi, rujukan jenis, bacaan dan tulisan, serta tepi pengecualian.

## Contoh gesaan ejen

- "Siapa yang memanggil `CartRepository.addItem`, dan daripada widget mana?" (`find_symbol`, kemudian `dependency_search` arah masuk)
- "Kelas mana yang melaksanakan `PaymentGateway`?" (`dependency_search`)
- "Jejaki bagaimana butang pembayaran sampai ke API pembayaran." (`get_task_context`)

## Had yang diketahui

- Kira-kira 200 nama daripada pustaka teras Dart ditapis daripada hubungan, termasuk pembantu koleksi seperti `map`, `where` dan `forEach`, kaedah `Future` dan `Stream` seperti `then` dan `listen`, serta pustaka `dart:`. Gunakan `text_pattern_search` untuknya.
- Nod tandatangan Dart menyimpan badan fungsi sebagai nod adik-beradik, jadi keputusan `structural_search` boleh menindihkan fungsi setempat atau lambda pada callable yang mengandunginya, dan getter serta setter muncul sebagai tandatangan kaedah.

## Langkah seterusnya

Sambungkan repositori dengan [panduan permulaan pantas](/ms/docs/quickstart), kemudian semak matriks sokongan di [halaman keserasian](/ms/docs/compatibility). Untuk pangkalan kod mudah alih yang lain, baca [panduan Kotlin](/ms/languages/kotlin) dan [panduan Swift](/ms/languages/swift).

## Butiran enjin

- Sokongan Dart merangkumi fail `.dart`. Kelas, mixin dan sambungan ialah jenis; pembina merangkumi bentuk generatif, `const` dan `factory`.
- Import menormalkan arahan `import`, `part` dan `library`; panggilan melalui awalan import kekal dalam graf.
- Penjenisan penerima menjejak parameter, pemboleh ubah, getter dan gelung `for`-`in`; kira-kira 200 nama pustaka teras ditapis daripada hubungan.

## Titik masuk MCP yang berguna

- `find_symbol`: Gunakan untuk kelas widget, repositori atau perkhidmatan apabila anda memerlukan takrifan dan rujukannya.
- `dependency_search`: Gunakan penelusuran arah masuk pada kaedah repositori atau antara muka untuk melihat pemanggil dan pelaksana sebelum mengubah API.
- `get_task_context`: Gunakan untuk gesaan seperti "jejaki bagaimana butang pembayaran sampai ke API pembayaran".
