🧹 Flutter Code: Мгновенное удаление всех неиспользуемых импортов
FlutterPulseЭта статья переведена специально для канала FlutterPulse. В этом канале вы найдёте много интересных вещей, связанных с Flutter. Не забывайте подписываться! 🚀

🧠 Видел такое раньше?
🧠 Видел такое раньше?
Открываете Dart-файл, и первое, что бросается в глаза — несколько поблекших серых импортов, которые просто так и висят… неиспользуемые.
Они засоряют экран, сбивают с толку ревьюеров и со временем делают ваш проект тяжелее, чем он есть на самом деле.
Хорошая новость? Удалять их вручную не нужно — одна простая команда может почистить весь репозиторий.

🚀 Магическая команда
В корне проекта просто выполните:
dart pub get && dart fix --apply
Вот и всё.
Анализатор Dart просканирует кодовую базу, найдет неиспользуемые импорты и удалит их — безопасно, мгновенно и последовательно.
Хотите сначала посмотреть изменения перед применением? Попробуйте:
dart fix --dry-run
Это покажет все предлагаемые исправления без реального изменения файлов.
🧩 Почему стоит беспокоиться о неиспользуемых импортах
- Шум: Их труднее просматривать при проверке зависимостей.
- Ложные срабатывания: Ревьюеры тратят время на проверку, используются ли импорты косвенно.
- Согласованность: Меньше импортов = чистые диффы, более быстрое ревью.
- Гармония с инструментами: Линтеры и форматтеры предполагают аккуратные списки импортов для предсказуемых результатов.
Удаление их — это низкорисковая, высокодоходная очистка, которую легко автоматизировать.
⚙️ Как работает dart fix
dart fix — это официальный инструмент Dart, который использует Dart Analyzer для автоматического обнаружения и исправления проблем — в том числе:
- Удаление неиспользуемых импортов
- Замена устаревших API
- Применение исправлений стиля и линтов
Вот простой рабочий процесс:
dart pub get
dart fix --dry-run # Просмотр изменений
dart fix --apply # Применение всех исправлений
dart analyze && flutter test
После выполнения ваш кодовая база станет чище и удобнее в обслуживании.
🧭 Предпочитаете GUI? Попробуйте горячие клавиши в IDE
💡 Android Studio / IntelliJ
- Перейдите в Code → Optimize Imports
- Или используйте сочетание клавиш (Windows/Linux: Ctrl + Alt + O · macOS: ⌥ + ⌘ + O)
- Вы также можете включить "Optimize imports on the fly" в Preferences → Editor → General → Auto Import
💻 VS Code
- Откройте Palette → "Source Action" → "Organize Imports"
- Или просто кликните на желтую лампочку → Organize Imports
- Для нескольких файлов используйте команду
dart fix --apply
💬 Профессиональный совет:
Действия IDE идеально подходят для быстрой очистки.
Для всего репозитория — ничто не сравнится сdart fix --apply.
🧯 Безопасность прежде всего: перед запуском
Несколько разумных привычек перед нажатием Enter:
- Сохраните текущую работу:
git add . && git commit -m "WIP: before dart fix"
2. Сначала выполните "сухой прогон":dart fix --dry-run
3. Избегайте сгенерированных файлов:
Пропустите .g.dart или build_runner выходы — они перезаписываются автоматически.
4. Всегда тестируйте после:
Всегда проверяйте с помощью dart analyze и flutter test.
🔄 Автоматизируйте это (Pre-Commit + CI)
🧩 Pre-Commit Hook
Добавьте это в .git/hooks/pre-commit и сделайте его исполняемым:
#!/bin/sh
flutter pub get
dart fix --dry-run > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Run 'dart fix --apply' to fix issues, then commit again."
exit 1
fi
🤖 Интеграция CI (пример для GitHub Actions)
- name: Install dependencies
run: flutter pub get
- name: Check for suggested fixes
run: dart fix --dry-run
- name: Fail if fixes required
run: |
if dart fix --dry-run | grep -q "0 fixes"; then
echo "No fixes required"
else
echo "Please run 'dart fix --apply' and push the changes"
exit 1
fi
Это позволит вашему репозиторию оставаться постоянно чистым — даже в командных рабочих процессах.
🧱 Бонус: обеспечьте это с помощью линтеров
Хотите убедиться, что неиспользуемые импорты никогда больше не проскальзывают?
Добавьте это в свой analysis_options.yaml:
analyzer:
errors:
unused_import: error
Теперь dart analyze будет завершаться с ошибкой при наличии неиспользуемых импортов — автоматически обеспечивая соблюдение лучших практик.
🧹 Пример до и после
До:
import 'package:flutter/material.dart';
import 'package:collection/collection.dart'; // не используется
class HomePage extends StatelessWidget {
// ... использует только material
}
После (dart fix --apply):
import 'package:flutter/material.dart';
class HomePage extends StatelessWidget {
// ... очищено
}
Крошечное изменение — огромное влияние на весь ваш репозиторий.
⚠️ Распространенные подводные камни
- 📋 Сгенерированный код: Игнорируйте файлы
.g.dart. Они все равно будут регенерироваться. - 🔍 Разрешение зависимостей: Всегда сначала запускайте
flutter pub get. - 🧱 Старые SDK: Обновите Flutter/Dart, если недоступна команда
dart fix. - ⚔️ Конфликты слияния: Обеспечьте согласованные импорты во всей вашей команде, чтобы избежать конфликтов порядка импорта.
🏁 Основной вывод
Неиспользуемые импорты не ломают код — но они разрушают концентрацию.
С помощью dart fix --applyВы можете вернуть ясность, улучшить ревью и обеспечить профессиональную гигиену во всем вашем кодовой базе Flutter.
Сделайте это регулярной привычкой — или лучше, автоматизируйте один раз и забудьте об этом.