# Flutter/Dart ## Признаки платформы - `pubspec.yaml` - `lib/main.dart` - `android/`, `ios/`, `web/` каталоги - `.dart_tool/` - `analysis_options.yaml` ## Признаки многомодульного проекта - `melos.yaml` (монорепозиторий) - Несколько `pubspec.yaml` в подкаталогах - `packages/` каталог ## Источники перед созданием навыка - `pubspec.yaml` (зависимости) - `analysis_options.yaml` - `build.yaml` (если используется build_runner) - `lib/main.dart` (точка входа) ## Что искать в кодовой базе ### Корневые каталоги исходников - `lib/`, `test/` ### Типовые слои и каталоги: зафиксируй найденные `screens/`, `widgets/`, `models/`, `services/`, `providers/`, `repositories/`, `utils/`, `constants/`, `bloc/`, `cubit/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | Screen/Page | `*Screen`, `*Page`, `extends StatefulWidget` | flutter-screen | | Widget | `extends StatelessWidget`, `extends StatefulWidget` | flutter-widget | | BLoC | `extends Bloc<`, `extends Cubit<` | bloc-pattern | | Provider | `ChangeNotifier`, `Provider.of<`, `context.read<` | provider-pattern | | Riverpod | `@riverpod`, `ref.watch`, `ConsumerWidget` | riverpod-provider | | GetX | `GetxController`, `Get.put`, `Obx(` | getx-controller | | Repository | `*Repository`, `abstract class *Repository` | data-repository | | Service | `*Service` | service-layer | | Model | `fromJson`, `toJson`, `@JsonSerializable` | json-model | | Freezed | `@freezed`, `part '*.freezed.dart'` | freezed-model | | API Client | `Dio`, `http.Client`, `Retrofit` | api-client | | Navigation | `Navigator`, `GoRouter`, `auto_route` | flutter-navigation | | Localization | `AppLocalizations`, `l10n`, `intl` | flutter-l10n | | Testing | `testWidgets`, `WidgetTester`, `flutter_test` | widget-test | | Integration Test | `integration_test`, `IntegrationTestWidgetsFlutterBinding` | integration-test | ## Обязательные разделы результата Добавь, если найдено: - **Состав экранов**: каталоги в `screens/`, `pages/` - **Управление состоянием**: BLoC, Provider, Riverpod, GetX - **Настройка навигации**: GoRouter, auto_route, Navigator - **Способ внедрения зависимостей**: get_it, injectable, вручную - **Слой API**: Dio, http, Retrofit - **Модели**: Freezed, json_serializable ## Откуда брать команды - `pubspec.yaml` команды (если используется melos) - README и документация - Обычные команды: `flutter run`, `flutter test`, `flutter build` - Добавляй только команды, которые есть в репозитории ## Основные пути - `lib/`, `test/` - `lib/screens/`, `lib/widgets/` - `lib/bloc/`, `lib/providers/` - `assets/`