Ответ
В Flutter я использую несколько подходов для отладки, в зависимости от ситуации:
1. Базовые методы для быстрой проверки:
// Простой вывод в консоль
print('Current state: $state');
// Для длинных строк без обрезки
debugPrint(jsonEncode(complexObject));
// Проверка условий только в debug-сборке
assert(user != null, 'User must be initialized');
2. Инструменты разработчика:
- Flutter DevTools — основной инструмент для инспекции:
- Widget Inspector — визуальное дерево виджетов и их свойства
- Performance View — анализ рендеринга и jank
- Network Profiler — мониторинг HTTP-запросов
- Memory Profiler — отслеживание утечек памяти
3. Точки останова и пошаговая отладка в IDE (VS Code/Android Studio):
void fetchData() {
final url = 'https://api.example.com/data'; // Брейкпоинт здесь
final response = await http.get(Uri.parse(url));
// Шаг за шагом можно проверить response
}
4. Структурированное логирование через пакеты:
dependencies:
logger: ^2.0.0
final logger = Logger();
logger.d('Debug message');
logger.w('Warning: API rate limit接近');
logger.e('Error fetching data', error: e, stackTrace: s);
5. Командная строка Flutter:
# Просмотр логов устройства
flutter logs
# Запуск с флагами отладки
flutter run --verbose
# Профилирование производительности
flutter run --profile
6. Кастомные утилиты для сложных случаев:
// Отладка перестроений виджетов
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
debugPrint('MyWidget rebuilt'); // Отслеживаем лишние rebuild
return Container();
}
}
// Визуальные маркеры для UI
debugPaintSizeEnabled = true; // Показывает границы виджетов
На практике я обычно начинаю с print() для быстрой проверки, затем перехожу к DevTools для анализа производительности, и в сложных случаях использую комбинацию брейкпоинтов и структурированного логирования.