flutter-错误信息收集

话不多说直接上代码:

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

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Flutter Crash Capture'),),
        body: MyHomePage(),
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    List<String> list = ["a"];
    print(list[10]);
    return Container();
  }
}

Future<Null> main() async {
  FlutterError.onError = (FlutterErrorDetails details) async {
    if (isInDebugMode) {
      FlutterError.dumpErrorToConsole(details);
    } else {
      Zone.current.handleUncaughtError(details.exception, details.stack);
    }
  };

  runZoned<Future<void>>(() async {
    runApp(MyApp());
  },  onError: (error, stackTrace) async {
    await _reportError(error, stackTrace);
  });
}

Future<Null> _reportError(dynamic error, dynamic stackTrace) async {
  // TODO

  // 上传错误信息
 // 可以打印也可以上传服务器
  print(error.toString());
  print(stackTrace.toString());

}

bool get isInDebugMode {
  // Assume you're in production mode.
  bool inDebugMode = false;

  // Assert expressions are only evaluated during development. They are ignored
  // in production. Therefore, this code only sets `inDebugMode` to true
  // in a development environment.
  assert(inDebugMode = true);

  return inDebugMode;
}

运行结果:

flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════

flutter: The following RangeError was thrown building MyHomePage(dirty):

flutter: RangeError (index): Invalid value: Only valid value is 0: 10

flutter:

flutter: The relevant error-causing widget was:

flutter: MyHomePage

flutter:

package:firstflutter_project/main.dart:11

flutter:

flutter: When the exception was thrown, this was the stack:

flutter: #0 List.[] (dart:core-patch/growable_array.dart:149:60)

flutter: #1 MyHomePage.build

package:firstflutter_project/main.dart:21

flutter: #2 StatelessElement.build

package:flutter/…/widgets/framework.dart:4291

...
...

flutter: (elided 8 frames from package dart:async and package dart:async-patch)
flutter:
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 刚接通C姑娘的电话,就听到低沉的哽咽声,吓的我差点把手机送给大地母亲,慌忙问:“怎么啦?”听到电话那头小心翼翼...
    钢眼妹阅读 4,489评论 0 0
  • 每次看到这个图片,看着钱老夫妇岁月静好的模样,看着两人历经岁月蹉跎的相濡以沫,满满当当的幸福感跃然纸上。 ...
    绝城的荒芜阅读 2,844评论 0 0
  • 凌晨五点半,静静的夜空,寒冷的风,起床后进行我的凌晨五点半计划,起床,洗溯,一杯梨膏一杯茶,进入书房,开门七件事:...
    史海钩沉阅读 3,552评论 6 7
  • 文/满 1989年7月,毕业于福建煤炭工业学校采矿工程专业的XX,那一年他22岁,从此与矿山结下不解情缘。 翻开他...
    满1018阅读 2,548评论 0 1