x_apm 2.0.0
x_apm: ^2.0.0 copied to clipboard
X APM
example/lib/main.dart
import 'dart:async';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:x_apm/x_apm.dart';
import 'package:x_apm_example/common/router.dart';
import 'package:x_apm_example/widgtes.dart';
GlobalKey<NavigatorState> globalKey = GlobalKey<NavigatorState>();
void main() {
// WidgetsFlutterBinding.ensureInitialized();
XApmManager.instance.init(
config: ApmConfig(
enable: true,
handlers: [FloatWindowHandler(globalKey)],
endpoint:
"https://hyperf.debug.591.com.hk/api/flutter/apm/save-record"));
HttpOverrides.global = ApmHttpOverrides();
XApm(appRunner: () => runApp(const MyApp()),ensureInitialized: true);
// FlutterError.onError = (FlutterErrorDetails details) {
// print('FlutterError.onError');
// print(details);
// };
//
// PlatformDispatcher.instance.onError = (error, stack) {
// print("PlatformDispatcher.instance.onError");
// print(error);
// print(stack);
// return true;
// };
//
// runApp(const MyApp());
// const dynamic x = 20;
// print(x.trim());
// runZonedGuarded(() {
//
// }, (error, stack) {
// print('runZonedGuarded');
// print(error);
// print(stack);
// });
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
navigatorKey: globalKey,
routes: generateRoutes(),
theme: ThemeData(primarySwatch: Colors.blue, useMaterial3: false),
navigatorObservers: [ApmNavigatorObserver.instance],
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('通用版首页'),
actions: <Widget>[
IconButton(
icon: const Icon(Icons.settings),
tooltip: 'Setting',
onPressed: () => Navigator.of(context).pushNamed('/setting'),
),
],
),
body: Center(
child: ListView(
padding: const EdgeInsets.only(
left: 16.0, right: 16.0, top: 8.0, bottom: 8.0),
children: <Widget>[
buildEntryButton(context, '异常测试', '/error_test'),
buildEntryButton(context, '页面路由跳转测试', '/navigator_test/first_page'),
buildEntryButton(
context, '设备信息', '/navigator_test/device_info_page'),
buildEntryButton(context, '网络测试', '/navigator_test/network_page'),
],
),
),
);
}
}