Flutter错误堆栈追踪插件error_stack的使用

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

Flutter错误堆栈追踪插件error_stack的使用

Error Stack for Flutter

pub package License: MIT

Error Stack Screenshot

Simple to use

Flutter App

要在Flutter项目中添加Error Stack,你需要在main.dart文件中导入并初始化它:

// Add Error Stack to your main.dart file
import 'package:error_stack/error_stack.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ErrorStack.init(); // Initialize Error Stack
  runApp(MyApp());
}

一旦你添加了Error Stack到你的应用程序中,它将覆盖默认的错误处理。

Nylo

如果你使用的是Nylo框架,可以在你的AppProvider类中启用Error Stack

// Add Error Stack to your Nylo app provider
import 'package:error_stack/error_stack.dart';

class AppProvider {

  @override
  boot(Nylo nylo) async {
    ...
    nylo.useErrorStack(); // enables Error Stack
  }
}

Features

  • ✅ Instant Google search to resolve error
  • ✅ Copy error message to clipboard
  • ✅ Modern UI for debug and release mode
  • ✅ Light and Dark mode support
  • ✅ Customizable Production Error Page

Getting started

Installation

将以下内容添加到你的pubspec.yaml文件中:

dependencies:
  error_stack: ^1.10.1

或者使用Dart命令行工具:

dart pub add error_stack

How to use

这个包非常容易使用。你可以设置日志级别(Log Level),并在初始化时传递参数来自定义它的行为。

Log Levels

  • ErrorStackLogLevel.verbose (default)
  • ErrorStackLogLevel.minimal (shows less information)

Flutter App

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ErrorStack.init(logLevel: ErrorStackLogLevel.minimal); // Initialize Error Stack with minimal log level
  runApp(MyApp());
}

Nylo

import 'package:error_stack/error_stack.dart';

class AppProvider {
    
  @override
  boot(Nylo nylo) async {
     ...
     nylo.useErrorStack(logLevel: ErrorStackLogLevel.minimal);
  }
}

Full Parameters

你可以在初始化Error Stack时设置更多参数:

ErrorStack.init(
	level: ErrorStackLogLevel.verbose,  // The ErrorStackLogLevel.verbose | ErrorStackLogLevel.minimal
	initialRoute: "/", // Navigate to this route when tapping "Restart app"
	errorWidget: (errorDetails) { // The error widget you want to show in release mode
    	return Scaffold(
      	    appBar: AppBar(
        	    title: Text("Error"),
      	    ),
      	    body: Center(
        	    child: Text("An error occurred"),
      	    ),
    	);
	}
);

尝试示例应用程序以查看它是如何工作的。

示例代码

以下是完整的示例代码,展示了如何在Flutter应用中使用error_stack插件:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ErrorStack.init(
    initialRoute: "/",
    level: ErrorStackLogLevel.verbose,
  );
  runApp(MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'ErrorStack',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  dynamic data = [];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Text(data.toString()),
      ),
    );
  }
}

希望这些信息能帮助你在Flutter项目中有效地使用error_stack插件!如果有任何问题或需要进一步的帮助,请随时提问。


更多关于Flutter错误堆栈追踪插件error_stack的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter错误堆栈追踪插件error_stack的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用error_stack插件来捕获和处理错误堆栈追踪的示例代码。error_stack插件可以帮助你更好地理解和调试应用程序中的错误。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加error_stack插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  error_stack: ^x.y.z  # 请替换为最新版本号

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

2. 初始化插件

在你的应用程序的入口文件(通常是main.dart)中,初始化ErrorStack插件。

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

void main() {
  // 初始化ErrorStack
  ErrorStack.init(
    onError: (ErrorStackInfo errorInfo) {
      // 处理错误堆栈信息
      print("Error occurred: ${errorInfo.message}");
      print("Stack trace: ${errorInfo.stackTrace}");
      // 你可以在这里添加更多的错误处理逻辑,比如发送到服务器
    },
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Error Stack Example'),
        ),
        body: Center(
          child: MyHomePage(),
        ),
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () {
        // 触发一个错误示例
        throw Exception("This is a test exception");
      },
      child: Text('Throw Error'),
    );
  }
}

3. 捕获和处理错误

在上述代码中,我们已经在main函数中初始化了ErrorStack,并设置了onError回调来处理捕获到的错误。当按钮被点击时,会抛出一个异常,这个异常会被ErrorStack捕获,并调用onError回调。

4. 自定义错误处理逻辑

你可以在onError回调中添加更多的自定义错误处理逻辑,比如将错误信息发送到服务器进行日志记录。

onError: (ErrorStackInfo errorInfo) {
  // 打印错误信息到控制台
  print("Error occurred: ${errorInfo.message}");
  print("Stack trace: ${errorInfo.stackTrace}");

  // 示例:将错误信息发送到服务器
  // sendErrorToServer(errorInfo.message, errorInfo.stackTrace);
},

// 示例函数:发送错误信息到服务器(需要你自己实现)
void sendErrorToServer(String message, String stackTrace) {
  // 实现你的服务器日志记录逻辑
  // 例如,使用HTTP请求将错误信息发送到你的服务器
}

5. 运行应用程序

现在,你可以运行你的Flutter应用程序,并点击按钮来触发一个错误。你应该能够在控制台中看到捕获到的错误信息和堆栈追踪。

通过这种方式,你可以使用error_stack插件来捕获和处理Flutter应用程序中的错误,并更好地进行调试和错误跟踪。

回到顶部