🚨 Глобальное логирование в 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 поверх вашего приложения. При встряхивании телефона (только для разрешенных админов) будет открываться интерфейс со списком всех последних действий и ошибок.


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


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