🚨 Глобальное логирование в Telegram

Чтобы не гадать, почему у пользователя упало приложение, можно настроить автоматическую отправку отчетов об ошибках в ваш Telegram-бот.

🛠 Реализация (talker_flutter)

Система перехватывает все асинхронные и синхронные ошибки и шлет их вам в чат. Также доступен секретный экран логов по жесту “тряска телефона”.

Шаг 1: Настройка зависимостей (pubspec.yaml)

dependencies:
 talker_flutter: ^4.6.1
 shake_gesture: ^2.0.0
 http: ^1.4.0

Шаг 2: Код сервиса

Создайте Custom File TalkerService.dart. В нем реализуйте отправку через Telegram Bot API:

Future<void> _sendToTelegram({required String error, String? stackTrace}) async {
 final url = Uri.parse('https://api.telegram.org/bot[TOKEN]/sendMessage');
 await http.post(url, body: {
 'chat_id': '[CHAT_ID]',
 'text': '🚨 Ошибка: $error\n📍 Stack: $stackTrace',
 'parse_mode': 'Markdown',
 });
}

Шаг 3: Инициализация в main.dart

Оберните запуск приложения в runZonedGuarded, чтобы ловить асинхронные ошибки:

void main() {
 runZonedGuarded(() async {
 WidgetsFlutterBinding.ensureInitialized();
 // Инициализация логгера...
 runApp(MyApp());
 }, (error, stack) {
 // Отправка в Telegram
 logException(error, stack);
 });
}

📱 Экран логов при тряске

Добавьте виджет ShakeGesture поверх вашего приложения. При встряхивании телефона (только для разрешенных админов) будет открываться интерфейс со списком всех последних действий и ошибок.


📺 Рекомендуемые видео

  • n8n: Полный обзор и туториал

Автор решения: Валерий Парфёнов