🧹 Flutter Code: Мгновенное удаление всех неиспользуемых импортов

🧹 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:

  1. Сохраните текущую работу:
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.

Сделайте это регулярной привычкой — или лучше, автоматизируйте один раз и забудьте об этом.

Report Page