Blame view

lib/main.dart 3.09 KB
4847e3dc   liangchengyou   feat:添加设备方向处理
1
  import 'dart:io';
1e7094e3   liangchengyou   feat:适配ipad
2
  
2a29701f   liangchengyou   feat:提交代码
3
  import 'package:flutter/material.dart';
4847e3dc   liangchengyou   feat:添加设备方向处理
4
  import 'package:flutter/services.dart';
3f45a30f   吴启风   feat:集成友盟APM(flut...
5
6
  import 'package:package_info_plus/package_info_plus.dart';
  import 'package:umeng_apm_sdk/umeng_apm_sdk.dart';
2a29701f   liangchengyou   feat:提交代码
7
  import 'package:wow_english/app/app.dart';
2a29701f   liangchengyou   feat:提交代码
8
  
320c0d8b   吴启风   feat:构建环境统一收口
9
10
  import 'common/request/basic_config.dart';
  
cc3b183a   liangchengyou   feat:ios启动图/logo
11
  void main() {
4847e3dc   liangchengyou   feat:添加设备方向处理
12
    ///设置设备默认方向
cc3b183a   liangchengyou   feat:ios启动图/logo
13
    if (Platform.isAndroid) {
1dc46cf7   吴启风   feat:绘本ui
14
15
16
      SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle( //设置状态栏透明
        statusBarColor: Colors.transparent,
      ));
4847e3dc   liangchengyou   feat:添加设备方向处理
17
    }
3f45a30f   吴启风   feat:集成友盟APM(flut...
18
19
  
    final UmengApmSdk umengApmSdk = UmengApmSdk(
6c23b545   吴启风   fix: 修复友盟隐私合规初始化时机
20
21
      name: '',
      bver: '',
3f45a30f   吴启风   feat:集成友盟APM(flut...
22
23
  
      // 是否开启SDK运行时日志输出
320c0d8b   吴启风   feat:构建环境统一收口
24
      enableLog: BasicConfig.isTestDev,
3f45a30f   吴启风   feat:集成友盟APM(flut...
25
26
  
      // 您使用的flutter版本,默认为空,为方便定位访问,建议配置
da57e288   Key   fixed: Android打包不...
27
      flutterVersion: '3.19.2',
3f45a30f   吴启风   feat:集成友盟APM(flut...
28
29
30
31
32
  
      // 您使用的flutter引擎版本
      engineVersion: 'ff5b5b5fa6',
  
      // 开启监测页面帧率(默认关闭) 版本 v2.1.3 可支持
320c0d8b   吴启风   feat:构建环境统一收口
33
      enableTrackingPageFps: BasicConfig.isTestDev,
3f45a30f   吴启风   feat:集成友盟APM(flut...
34
35
  
      // 开启监测页面性能(默认关闭)版本 v2.1.3 可支持
320c0d8b   吴启风   feat:构建环境统一收口
36
      enableTrackingPagePerf: BasicConfig.isTestDev,
3f45a30f   吴启风   feat:集成友盟APM(flut...
37
38
39
40
41
42
43
44
45
46
47
  
      // 带入继承ApmWidgetsFlutterBinding的覆写和初始化方法, 可用于自定义监听应用生命周期
      // 确保去掉原有的WidgetsFlutterBinding.ensureInitialized() ,以免出现重复初始化绑定的异常造成无法正常初始化,SDK内部已通过initFlutterBinding入参带入继承的WidgetsFlutterBinding实现初始化操作
      initFlutterBinding: MyApmWidgetsFlutterBinding.ensureInitialized,
  
      // 抛出异常事件
      onError: (exception, stack) {
        debugPrint(exception.toString());
      },
  
    );
6c23b545   吴启风   fix: 修复友盟隐私合规初始化时机
48
49
50
  
    // 此处只安装 Flutter 侧监控能力。Native APM/Common SDK 会保持未初始化状态,
    // 直到用户同意隐私政策后才由 SplashPage 正式启动。
3f45a30f   吴启风   feat:集成友盟APM(flut...
51
52
53
54
55
    umengApmSdk.init(appRunner: (observer) async {
      // 确保去掉原有的WidgetsFlutterBinding.ensureInitialized() ,以免出现重复初始化绑定的异常造成无法正常初始化,SDK内部已通过initFlutterBinding入参带入继承的WidgetsFlutterBinding实现初始化操作
      // 依赖ensureInitialized()初始化的代码可在此调用
      // 需要异步获取设置应用名称和版本号可在此回调中操作
      // SDK实例化的设置可先将name和bver 为 "",然后通过以下方式进行设置
6c23b545   吴启风   fix: 修复友盟隐私合规初始化时机
56
      final PackageInfo packageInfo = await PackageInfo.fromPlatform();
3f45a30f   吴启风   feat:集成友盟APM(flut...
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
      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;
    }
2a29701f   liangchengyou   feat:提交代码
81
  }