bugly_crash 0.0.6 copy "bugly_crash: ^0.0.6" to clipboard
bugly_crash: ^0.0.6 copied to clipboard

Flutter app can use this plugin to monitor exception happened and upload error or crash to bugly server.

example/lib/main.dart

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

import 'package:flutter/services.dart';
import 'package:bugly_crash/bugly.dart';
import 'package:bugly_crash/buglyLog.dart';
import 'dart:io';

//void main() => runApp(MyApp());
Map<String,String> extraInfo = {"key1":"value1","key2":"value2","key3":"value1"};

Future<Null> main() async {
  //一、这里配置上报APP未捕获到的异常,业务可以自由决定上报的信息
  FlutterError.onError = (FlutterErrorDetails details) async {
    print("zone current print error");
    Zone.current.handleUncaughtError(details.exception, details.stack!);
  };

  runZonedGuarded<Future<Null>>(() async {
    runApp(MyApp());
  }, (error, stackTrace) async {
    String type = "flutter uncaught error";
    await Bugly.postException(type:type,error: error.toString(),stackTrace: stackTrace.toString(),extraInfo:extraInfo);
  });
}


class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';

  @override
  void initState() {
    super.initState();
    initPlatformState();
    if(Platform.isAndroid){
      initBuglyAndroid();
    }else if(Platform.isIOS){
      initBuglyIos();
    }
  }

  void initBuglyAndroid(){
    //Bugly.setAndroidServerUrl(url: "https://xxxx");
    Bugly.initAndroidCrashReport(appId:"c50a711298",isDebug: true);
    Bugly.setUserId(userId:"androiduser");
    //如果遇到AndroidId采集隐私问题,可以参考https://github.com/BuglyDevTeam/Bugly-Android-Demo
    Bugly.setAndroidDeviceId(deviceId: "test");
    Bugly.setUserSceneTag(userSceneTag: 111437);
    Bugly.setAppVersion(appVersion:"1.9.3");
    Bugly.setAndroidAppChannel(appChannel: "test");
    //bugly自定义日志,可在"跟踪日志"页面查看
    BuglyLog.d(tag:"bugly",content:"debugvalue");
    BuglyLog.i(tag:"bugly",content:"infovalue");
    BuglyLog.v(tag:"bugly",content:"verbosevalue");
    BuglyLog.w(tag:"bugly",content:"warnvalue");
    BuglyLog.e(tag:"bugly",content:"errorvalue");
    //自定义map参数 可在"跟踪数据"页面查看
    Bugly.putUserData(userKey:"userkey1",userValue:"uservalue1");
    Bugly.putUserData(userKey:"userkey2",userValue:"uservalue2");
  }

  void initBuglyIos(){
    //Bugly.initIosCrashReport(appId:"87654c7bfa",debugMode: true,serverUrl: "");
    Bugly.initIosCrashReport(appId:"87654c7bfa",debugMode: true);
    Bugly.setUserSceneTag(userSceneTag: 116852);
    Bugly.setAppVersion(appVersion:"1.9.2");
    Bugly.putUserData(userKey:"userkey1",userValue:"uservalue1");
    Bugly.setUserId(userId:"iosuser");
    BuglyLog.d(tag:"bugly",content:"debugvalue");
    BuglyLog.i(tag:"bugly",content:"infovalue");
    BuglyLog.w(tag:"bugly",content:"warnvalue");
    BuglyLog.v(tag:"bugly",content:"verbosevalue");
    BuglyLog.e(tag:"bugly",content:"errorvalue");
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    String platformVersion;
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      platformVersion = await Bugly.platformVersion;
    } on PlatformException{
      platformVersion = 'Failed to get platform version.';
    }


    //(1)测试APP自己捕获到的异常上报
    try {
      var list = [1,2];
      list[3] = 1;
    } catch (e){
      String type = "flutter caught error";
      await Bugly.postException(type:type,error:"null exception",stackTrace:e.toString(),extraInfo:extraInfo);
    }

    //(2)测试APP未捕获到的异常上报
    //throw 'bugly flutter uncaught error test';
    var list = [1,2];
    list[3] = 1;

    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  _onClick(){
    throw 'bugly flutter uncaught error test';
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: GestureDetector(
            onTap: _onClick,
            child: Text('Running on: $_platformVersion\n'),
          )
        ),
      ),
    );
  }
}
7
likes
150
points
41
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter app can use this plugin to monitor exception happened and upload error or crash to bugly server.

Homepage

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter

More

Packages that depend on bugly_crash