initStat function

dynamic initStat(
  1. String appName,
  2. String appVersion
)

Implementation

initStat(String appName, String appVersion) async {
  if (!needStat)
    return;
  if (_initialized)
    return;
  _initialized = true;

  if (kIsWeb) {
    html.window.onBeforeUnload.listen((event) async {
      addPoint("main_end");
    });
    html.document.addEventListener("visibilitychange", ((event) async{
      if (html.document.visibilityState == 'visible') {
        addPoint("background_end");
      } else {
        addPoint("background_start");
      }
    }));
  }

  _statData.appName = appName;
  _statData.appVersion = appVersion;
  try{
    final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();

    if (kIsWeb){
      WebBrowserInfo _deviceData = await deviceInfoPlugin.webBrowserInfo;
      _statData.isWeb = true;
      _statData.userAgent = "${_deviceData.userAgent}";
      // _statData.userAgent = "${_deviceData.vendor} ${_deviceData.userAgent} ${_deviceData.hardwareConcurrency}";
      // hardwareConcurrency - the number of logical processors available to run threads on the user's computer.
      // _deviceData.vendor - Either "Google Inc.", "Apple Computer, Inc.", or (in Firefox) the empty string.
      /*
            if (sUsrAg.indexOf("Firefox") > -1) {
              sBrowser = "Mozilla Firefox";
              // "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
            } else if (sUsrAg.indexOf("SamsungBrowser") > -1) {
              sBrowser = "Samsung Internet";
              // "Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G955F Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/9.4 Chrome/67.0.3396.87 Mobile Safari/537.36
            } else if (sUsrAg.indexOf("Opera") > -1 || sUsrAg.indexOf("OPR") > -1) {
              sBrowser = "Opera";
              // "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.106"
            } else if (sUsrAg.indexOf("Trident") > -1) {
              sBrowser = "Microsoft Internet Explorer";
              // "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; Zoom 3.6.0; wbx 1.0.0; rv:11.0) like Gecko"
            } else if (sUsrAg.indexOf("Edge") > -1) {
              sBrowser = "Microsoft Edge (Legacy)";
              // "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299"
            } else if (sUsrAg.indexOf("Edg") > -1) {
              sBrowser = "Microsoft Edge (Chromium)";
              // Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64
            } else if (sUsrAg.indexOf("Chrome") > -1) {
              sBrowser = "Google Chrome or Chromium";
              // "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 Chrome/66.0.3359.181 Safari/537.36"
            } else if (sUsrAg.indexOf("Safari") > -1) {
              sBrowser = "Apple Safari";
              // "Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1 980x1306"
            } else {
              sBrowser = "unknown";
            }
       */
    }else{
      if (Platform.isAndroid) {
        AndroidDeviceInfo _deviceData = await deviceInfoPlugin.androidInfo;
        _statData.isAndroid = true;
        if (_deviceData.isPhysicalDevice != null)
          _statData.isPhysicalDevice = _deviceData.isPhysicalDevice!;
        _statData.androidVer = "${_deviceData.version.release}";
        if (_deviceData.androidId != null)
          _statData.androidId = _deviceData.androidId!;
      }else{
        if (Platform.isIOS) {
          IosDeviceInfo _deviceData = await deviceInfoPlugin.iosInfo;
          if (needDebugText)
            print("identifierForVendor=${_deviceData.identifierForVendor}"); // уникальный идентифер
          if (needDebugText)
            print("isPhysicalDevice=${_deviceData.isPhysicalDevice}");
        }else{
          WindowsDeviceInfo _deviceData = await deviceInfoPlugin.windowsInfo;
          if (Platform.isWindows){
            _statData.isWindows = true;
            _statData.computerName = _deviceData.computerName;
            _statData.numberOfCores = _deviceData.numberOfCores;
            _statData.systemMemoryInMegabytes = _deviceData.systemMemoryInMegabytes;
          }
        }
      }
    }
  }catch(ex){
    //_addStat();
  }
  await addPoint("main_start");
  _sendLocalSaved();
}