main.dart 3.23 KB
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:umeng_apm_sdk/umeng_apm_sdk.dart';
import 'package:wow_english/app/app.dart';

import 'common/request/basic_config.dart';

// void main() {
//   ///设置设备默认方向
//   WidgetsFlutterBinding.ensureInitialized();
//   if (Platform.isAndroid) {
//     SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle( //设置状态栏透明
//       statusBarColor: Colors.transparent,
//     ));
//   }
//   runApp(const App());
// }

void main() {
  ///设置设备默认方向
  if (Platform.isAndroid) {
    SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle( //设置状态栏透明
      statusBarColor: Colors.transparent,
    ));
  }

  final UmengApmSdk umengApmSdk = UmengApmSdk(
    name: "",
    bver: "",

    // 是否开启SDK运行时日志输出
    enableLog: BasicConfig.isTestDev,

    // 您使用的flutter版本,默认为空,为方便定位访问,建议配置
    flutterVersion: '3.19.2',

    // 您使用的flutter引擎版本
    engineVersion: 'ff5b5b5fa6',

    // 开启监测页面帧率(默认关闭) 版本 v2.1.3 可支持
    enableTrackingPageFps: BasicConfig.isTestDev,

    // 开启监测页面性能(默认关闭)版本 v2.1.3 可支持
    enableTrackingPagePerf: BasicConfig.isTestDev,

    // 带入继承ApmWidgetsFlutterBinding的覆写和初始化方法, 可用于自定义监听应用生命周期
    // 确保去掉原有的WidgetsFlutterBinding.ensureInitialized() ,以免出现重复初始化绑定的异常造成无法正常初始化,SDK内部已通过initFlutterBinding入参带入继承的WidgetsFlutterBinding实现初始化操作
    initFlutterBinding: MyApmWidgetsFlutterBinding.ensureInitialized,

    // 抛出异常事件
    onError: (exception, stack) {
      debugPrint(exception.toString());
    },

  );
  umengApmSdk.init(appRunner: (observer) async {
    // 确保去掉原有的WidgetsFlutterBinding.ensureInitialized() ,以免出现重复初始化绑定的异常造成无法正常初始化,SDK内部已通过initFlutterBinding入参带入继承的WidgetsFlutterBinding实现初始化操作
    // 依赖ensureInitialized()初始化的代码可在此调用
    // 需要异步获取设置应用名称和版本号可在此回调中操作
    // SDK实例化的设置可先将name和bver 为 "",然后通过以下方式进行设置
    PackageInfo packageInfo = await PackageInfo.fromPlatform();
    String packageName = packageInfo.packageName;
    String buildNumber = packageInfo.buildNumber;
    String version = packageInfo.version;
    umengApmSdk.name = packageName;
    umengApmSdk.bver = '$version+$buildNumber';

    return App(observer);
  });
}


//ApmWidgetsFlutterBinding的覆写和初始化方法
class MyApmWidgetsFlutterBinding extends ApmWidgetsFlutterBinding {
  @override
  void handleAppLifecycleStateChanged(AppLifecycleState state) {
    // 添加自己的实现逻辑
    debugPrint('AppLifecycleState changed to $state');
    super.handleAppLifecycleStateChanged(state);
  }

  static WidgetsBinding? ensureInitialized() {
    MyApmWidgetsFlutterBinding();
    return WidgetsBinding.instance;
  }
}