app_config_helper.dart 2.31 KB
import 'dart:ffi';
import 'dart:io';

import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:wow_english/common/core/sp_const.dart';
import 'package:wow_english/common/core/user_util.dart';

import '../../models/app_config_entity.dart';
import '../../utils/sp_util.dart';
import '../request/dao/system_dao.dart';

class AppConfigHelper {

  static AppConfigEntity? configEntityEntity;

  static String _versionCode = '';

  // 是否检测过更新,因为路由混乱导致首页会多次启动,避免重复检测更新,先临时处理
  static bool checkedUpdate = false;

  // 获取用户信息
  static Future<AppConfigEntity?> getAppConfig({ bool forceSync = false }) async {
    if (forceSync == false && configEntityEntity != null) {
      return configEntityEntity;
    }
    configEntityEntity = await SystemDao.getAppConfig();
    return configEntityEntity;
  }

  // 是否是iOS平台
  static bool isIosPlatform() {
    return defaultTargetPlatform == TargetPlatform.iOS;
  }

  // 是否需要隐藏...
  static bool shouldHidePay() {
    return isIosPlatform() &&
        (configEntityEntity?.isAppReviewing() == true || UserUtil.getUser()?.phoneNum == "17730280759");
  }

  // 获取app版本号
  static Future<String> getAppVersion() async {
    if (_versionCode.isNotEmpty) {
      return _versionCode;
    }
    PackageInfo packageInfo = await PackageInfo.fromPlatform();
    String versionName = packageInfo.version; // 版本号
    String versionCode = packageInfo.buildNumber; // 构建号
    _versionCode = versionCode;

    debugPrint('versionName=$versionName versionCode=$versionCode platForm=${Platform.operatingSystem}');
    return versionCode;
  }

  static void saveAgreementAccepted(bool accepted) {
    SpUtil.getInstance().setData(SpConst.prefsKeyAgreementAccepted, accepted);
  }

  static bool getAgreementAccepted() {
    return SpUtil.getInstance().get<bool>(SpConst.prefsKeyAgreementAccepted) ?? false;
  }

  static void _clearUserData() {
    SpUtil.getInstance().remove(SpConst.prefsKeyAgreementAccepted);
  }

  static void exitApp() {
    if (Platform.isIOS) {
      exit(0);
    } else {
      //此种方式在IOS上不生效
      SystemNavigator.pop();
    }
  }
}