Flutter应用性能监控插件shipbook_flutter的使用

Flutter应用性能监控插件shipbook_flutter的使用

ShipBook包用于Flutter

官方SDK

这是官方的ShipBook SDK用于Flutter。ShipBook可以让你远程收集、搜索和分析用户的日志和异常,并在云端进行用户和会话级别的分析。

关于ShipBook

ShipBook可以让你远程收集、搜索和分析用户的日志和异常,并在云端进行用户和会话级别的分析。


资源

作者

Elisha Sterngold(ShipBook Ltd.)

许可证

ShipBookSDK 可供使用MIT许可证。更多详情请查看LICENSE文件。


示例代码

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

// 获取日志记录器实例
final log = Shipbook.getLogger("main");

void main() {
  runApp(const MyApp());

  // 启用内部日志记录
  Shipbook.enableInnerLog(true);

  // 初始化ShipBook,传入应用ID和应用密钥
  Shipbook.start("appId", "appKey");
}

class RegisterButton extends StatefulWidget {
  const RegisterButton({super.key});

  [@override](/user/override)
  // ignore: library_private_types_in_public_api
  _RegisterButtonState createState() => _RegisterButtonState();
}

class _RegisterButtonState extends State<RegisterButton> {
  bool isUserRegistered = false;
  int counter = 0;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return TextButton(
      onPressed: () {
        setState(() {
          if (isUserRegistered) {
            Shipbook.logout(); // 注销当前用户
            isUserRegistered = false;
          } else {
            isUserRegistered = true;
            Shipbook.registerUser('test$counter', fullName: 'Test User $counter', email: 'test$counter@test.com'); // 注册新用户
            counter++;
          }
        });
      },
      child: Text(!isUserRegistered ? '注册用户 [test$counter]' : '从ShipBook注销'),
    );
  }
}

class ScreenButton extends StatelessWidget {
  const ScreenButton({super.key, required this.screenName});

  final String screenName;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return TextButton(
      onPressed: () {
        Shipbook.screen(screenName); // 设置当前屏幕名称
      },
      child: Text('设置屏幕为 $screenName'),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

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

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    log.i('正在增加计数器 $_counter'); // 记录日志信息
    log.d('计数器增加到 $_counter'); // 记录详细日志信息
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const RegisterButton(),
            const ScreenButton(screenName: 'Home'),
            const Text(
              '你已经按了按钮这么多次:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: '增加',
        child: const Icon(Icons.add),
      ),
    );
  }
}

更多关于Flutter应用性能监控插件shipbook_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用性能监控插件shipbook_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


shipbook_flutter 是一个用于 Flutter 应用的性能监控和错误追踪的插件。它可以帮助开发者监控应用的性能、捕获错误、收集日志,并将这些数据发送到 Shipbook 服务器进行分析。

以下是 shipbook_flutter 的使用步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 shipbook_flutter 依赖:

dependencies:
  shipbook_flutter: ^1.0.0

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

2. 初始化 Shipbook

main.dart 文件中初始化 Shipbook。通常,你会在 main() 函数中初始化它:

import 'package:shipbook_flutter/shipbook_flutter.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Shipbook
  await Shipbook.initialize(
    appId: 'YOUR_APP_ID',
    appKey: 'YOUR_APP_KEY',
    serverUrl: 'https://api.shipbook.io', // 可选,默认是 Shipbook 的官方服务器
  );

  runApp(MyApp());
}

确保将 YOUR_APP_IDYOUR_APP_KEY 替换为你在 Shipbook 控制台中获取的实际值。

3. 捕获日志

你可以使用 Shipbooklog 方法来记录日志:

import 'package:shipbook_flutter/shipbook_flutter.dart';

void logSomething() {
  Shipbook.log('This is a log message', level: LogLevel.info);
}

LogLevel 可以是 info, warning, error, debug, verbose 等。

4. 捕获异常

你可以使用 Shipbook 来捕获未处理的异常:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  await Shipbook.initialize(
    appId: 'YOUR_APP_ID',
    appKey: 'YOUR_APP_KEY',
  );

  // 捕获未处理的异常
  FlutterError.onError = (FlutterErrorDetails details) {
    Shipbook.logError(details.exception, stackTrace: details.stack);
  };

  runApp(MyApp());
}

5. 监控性能

shipbook_flutter 还可以监控应用的性能指标,例如启动时间、页面加载时间等。你可以使用 ShipbooktrackEvent 方法来记录自定义事件:

void trackCustomEvent() {
  Shipbook.trackEvent('user_login', properties: {'user_id': '123'});
}

6. 用户识别

如果你想要将日志和事件与特定用户关联,可以使用 identify 方法:

void identifyUser() {
  Shipbook.identify('user_id_123', traits: {'name': 'John Doe', 'email': 'john@example.com'});
}

7. 查看数据

完成上述步骤后,你可以在 Shipbook 控制台中查看应用的日志、错误、性能数据和自定义事件。

8. 调试

在开发过程中,你可以启用调试模式来查看 shipbook_flutter 的日志输出:

await Shipbook.initialize(
  appId: 'YOUR_APP_ID',
  appKey: 'YOUR_APP_KEY',
  debug: true, // 启用调试模式
);

9. 生产环境

在发布应用时,请确保禁用调试模式:

await Shipbook.initialize(
  appId: 'YOUR_APP_ID',
  appKey: 'YOUR_APP_KEY',
  debug: false, // 禁用调试模式
);
回到顶部