Flutter异常捕获插件tele_catcher的使用

发布于 1周前 作者 wuwangju 来自 Flutter

Flutter异常捕获插件tele_catcher的使用

特性

捕获您的错误并发送到Telegram

开始

在您的pubspec.yaml文件中添加tele_catcher

dependencies:
  tele_catcher: ^1.1.0

或者直接从GitHub获取

dependencies:
  tele_catcher:
      git: https://github.com/alejandrogiubel/tele_catcher

使用

首先,您需要通过BotFather创建一个Telegram机器人以获取机器人的令牌。然后,您可以在私聊或群聊中启动该机器人。 为了获取聊天ID,请参阅以下链接: https://stackoverflow.com/questions/32423837/telegram-bot-how-to-get-a-group-chat-id

在主函数中初始化tele_catcher

await TeleCatcher.start('1111111111:aqwdergydsghbnhytyjuhf304-dkmtihndeyu58', 000000000);

发送报告

TeleCatcher.sendError('This is a simple message');

如果您想要一个全局错误捕获器并将报告发送给TeleCatcher

FlutterError.onError = (details) {
  TeleCatcher.sendError(details.toString());
};

额外信息

欢迎提交PR


## 完整示例Demo

```dart
import 'package:flutter/material.dart';
import 'package:tele_catcher/tele_catcher.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化TeleCatcherBot,使用您的机器人令牌和聊天ID
  // 为了获取聊天ID,请参阅
  // https://stackoverflow.com/questions/32423837/telegram-bot-how-to-get-a-group-chat-id
  await TeleCatcher.start(
      '1111111111:aqwdergydsghbnhytyjuhf304-dkmtihndeyu58', 000000000);

  // 如果您想要一个全局错误捕获器并将报告发送给TeleCatcher
  FlutterError.onError = (details) {
    TeleCatcher.sendError(details.toString());
  };

  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // 这是您的应用程序的根组件
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        body: Center(
          child: FilledButton(
            onPressed: () {
              // 发送自定义消息到TeleCatcherBot
              TeleCatcher.sendError('This is a simple message');
            },
            child: const Text('Send'),
          ),
        ),
      ),
    );
  }
}

更多关于Flutter异常捕获插件tele_catcher的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter异常捕获插件tele_catcher的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用tele_catcher插件来进行异常捕获的示例代码。tele_catcher是一个用于捕获和处理Flutter应用中的未捕获异常的插件。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加tele_catcher依赖:

dependencies:
  flutter:
    sdk: flutter
  tele_catcher: ^最新版本号  # 请替换为实际的最新版本号

然后运行flutter pub get来安装依赖。

2. 配置TeleCatcher

在你的Flutter应用的入口文件(通常是main.dart)中配置TeleCatcher

import 'package:flutter/material.dart';
import 'package:tele_catcher/tele_catcher.dart';

void main() {
  // 配置TeleCatcher
  TeleCatcher().init(
    enableLog: true, // 是否启用日志输出
    enableReport: true, // 是否启用报告(通常用于发送到服务器)
    enableDialog: true, // 是否在捕获异常时显示对话框
    dialogTitle: "Error", // 对话框标题
    dialogMessage: "An unexpected error occurred. Please try again later.", // 对话框消息
    dialogOkText: "OK", // 对话框确认按钮文本
    onReport: (Map<String, dynamic> report) async {
      // 这里可以处理异常报告,比如发送到服务器
      print("Exception report: $report");
    },
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter TeleCatcher Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 触发一个未捕获异常
            throw UnimplementedError("This is an unexpected error.");
          },
          child: Text('Throw Error'),
        ),
      ),
    );
  }
}

3. 运行应用

运行你的Flutter应用。当你点击按钮时,会触发一个未捕获的异常,TeleCatcher将捕获这个异常并根据配置显示对话框或执行其他操作。

4. 处理报告(可选)

onReport回调中,你可以将异常报告发送到你的服务器或进行其他处理。这里的示例只是简单地将报告打印到控制台。

注意事项

  • 确保在生产环境中正确配置enableReportonReport回调,以便捕获的异常可以被有效地收集和处理。
  • 你可以根据需求自定义TeleCatcher的其他配置选项,比如更改对话框的样式或行为。

通过以上步骤,你就可以在Flutter应用中使用tele_catcher插件来捕获和处理未捕获的异常了。

回到顶部