# iphone-duo-flutter

Помогает адаптировать приложение на Flutter под складной iPhone Duo. Учит обходить ограничения MediaQuery и пробрасывать нативные API через платформенные каналы.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 402 установки · ★ 220
- Автор: mirzaaghazadeh
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/mirzaaghazadeh/iphone-duo-skills/tree/HEAD/skills/iphone-duo-flutter/SKILL.md
- Обновлён: 2026-10-23
- HTML: https://affpapa.org/nevibecode/skills/iphone-duo-flutter

## Что делает

В Flutter складные экраны изначально проектировались под Android. Из-за этого `MediaQuery.displayFeatures` на iPhone Duo возвращает пустой список независимо от угла сгиба устройства. Скилл раскладывает адаптацию интерфейса на два уровня: базовая вёрстка на чистом Dart и нативные вызовы.

На первом уровне предлагается отказаться от констант в пользу `LayoutBuilder` и `MediaQuery.sizeOf(context)`. Особое внимание уделено асимметричным отступам безопасной зоны, так как системные элементы iPhone Duo смещены на одну сторону. Расчёт ширины через удвоение левого отступа здесь сразу ломает экран.

Для работы со складкой и подэкранной камерой чистого Dart недостаточно. Скилл описывает сборку моста через `MethodChannel` для разовых запросов `reservedRegions` и `EventChannel` для угла шарнира `UIHingeInteraction`. Учтите: для проверки нативного слоя понадобится симулятор Xcode 27.1.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add mirzaaghazadeh/iphone-duo-skills --skill iphone-duo-flutter -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/iphone-duo-flutter/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/iphone-duo-flutter/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add mirzaaghazadeh/iphone-duo-skills --skill iphone-duo-flutter -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/iphone-duo-flutter/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add mirzaaghazadeh/iphone-duo-skills --skill iphone-duo-flutter -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/iphone-duo-flutter/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install mirzaaghazadeh/iphone-duo-skills iphone-duo-flutter
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/iphone-duo-flutter/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add mirzaaghazadeh/iphone-duo-skills --skill iphone-duo-flutter -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/mirzaaghazadeh/iphone-duo-skills --path skills/iphone-duo-flutter
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/iphone-duo-flutter/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add mirzaaghazadeh/iphone-duo-skills --skill iphone-duo-flutter -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/mirzaaghazadeh/iphone-duo-skills/tree/HEAD/skills/iphone-duo-flutter/SKILL.md

## Когда брать
- исправить ошибки при асимметричных safe area отступах
- перевести вёрстку на LayoutBuilder и относительные ограничения
- пробросить reservedRegions из iOS 27.1 через MethodChannel
- настроить стриминг угла сгиба через EventChannel
- заменить NavigationBar на NavigationRail на внутреннем экране

## Примеры запросов агенту
- Как настроить безопасные отступы под iPhone Duo в моем Flutter-экране?
- Помоги написать EventChannel для чтения UIHingeInteraction в Runner
- Почему MediaQuery.displayFeatures возвращает пустой список на iPhone Duo?

## Похожие
- [flutter-build-responsive-layout](https://affpapa.org/nevibecode/skills/flutter-build-responsive-layout.md) — скилл · 42500 установок
- [flutter-fix-layout-issues](https://affpapa.org/nevibecode/skills/flutter-fix-layout-issues.md) — скилл · 39900 установок
- [flutter-animations](https://affpapa.org/nevibecode/skills/flutter-animations.md) — скилл · 15400 установок
- [flutter-expert](https://affpapa.org/nevibecode/skills/httpsgithubcomjeffallan-flutter-expert.md) — скилл · 14300 установок
- [dart-flutter-patterns](https://affpapa.org/nevibecode/skills/dart-flutter-patterns.md) — скилл · 4700 установок
- [flutter-dev](https://affpapa.org/nevibecode/skills/flutter-dev.md) — скилл · 2000 установок

Из того же набора: [mirzaaghazadeh/iphone-duo-skills](https://affpapa.org/nevibecode/by/mirzaaghazadeh/iphone-duo-skills.md) — 8 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
