123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- // 应用相关操作状态 State 类,用于 RiverPod 中 Provider 的定义
- import 'package:device_info_plus/device_info_plus.dart';
- import 'package:flutter/material.dart';
- import 'package:package_info_plus/package_info_plus.dart';
- import 'package:shared/utils/device_utils.dart';
- class AppConfig {
- /// android 设备信息
- AndroidDeviceInfo? androidDeviceInfo;
- /// ios 设备信息
- IosDeviceInfo? iosDeviceInfo;
- /// 包信息
- PackageInfo? packageInfo;
- double? _safeAreaPaddingTop;
- double? _safeAreaPaddingBottom;
- //屏幕大小
- Size? mSize;
- //密度
- double? mRatio;
- //设备像素px
- double? width;
- double? height;
- //设备宽高比,大于1.9是全面屏手机
- double whRatio = 1;
- double density = 0;
- //是否是全面屏设备(宽高比大于1.9)
- bool isFullScreenDevice = false;
- // 上下边距 (主要用于 刘海 和 内置导航键)
- double? topPadding;
- double? bottomPadding;
- double? textScaleFactor;
- Brightness? platformBrightness;
- EdgeInsets? viewInsets;
- EdgeInsets? padding;
- bool? alwaysUse24HourFormat;
- bool? accessibleNavigation;
- bool? invertColors;
- bool? disableAnimations;
- bool? boldText;
- Orientation? orientation;
- /// 是否 release 包(生产环境)
- bool get isRelease => const bool.fromEnvironment("dart.vm.product");
- String get version => packageInfo?.version ?? '-';
- String get appName => packageInfo?.appName ?? '-';
- String get packageName => packageInfo?.packageName ?? '-';
- String get buildNumber => packageInfo?.buildNumber ?? '-';
- // 顶部安全距离(pt)
- double get safeAreaPaddingTop => _safeAreaPaddingTop!;
- // 底部安全距离(pt)
- double get safeAreaPaddingBottom => _safeAreaPaddingBottom!;
- // 获取当前Android设备的Android版本
- int getAndroidSdkInt() {
- if (DeviceUtils.isAndroid) {
- return androidDeviceInfo?.version.sdkInt ?? -1;
- } else {
- return -1;
- }
- }
- //===================== 插件自动生成-无需手动修改 ↓ ===================================
- //<editor-fold desc="Data Methods">
- AppConfig({
- this.androidDeviceInfo,
- this.iosDeviceInfo,
- this.packageInfo,
- this.mSize,
- this.mRatio,
- this.width,
- this.height,
- required this.whRatio,
- required this.density,
- required this.isFullScreenDevice,
- this.topPadding,
- this.bottomPadding,
- this.textScaleFactor,
- this.platformBrightness,
- this.viewInsets,
- this.padding,
- this.alwaysUse24HourFormat,
- this.accessibleNavigation,
- this.invertColors,
- this.disableAnimations,
- this.boldText,
- this.orientation,
- required double? safeAreaPaddingTop,
- required double? safeAreaPaddingBottom,
- }) : _safeAreaPaddingTop = safeAreaPaddingTop,
- _safeAreaPaddingBottom = safeAreaPaddingBottom;
- @override
- bool operator ==(Object other) =>
- identical(this, other) ||
- (other is AppConfig &&
- runtimeType == other.runtimeType &&
- androidDeviceInfo == other.androidDeviceInfo &&
- iosDeviceInfo == other.iosDeviceInfo &&
- packageInfo == other.packageInfo &&
- _safeAreaPaddingTop == other._safeAreaPaddingTop &&
- _safeAreaPaddingBottom == other._safeAreaPaddingBottom &&
- mSize == other.mSize &&
- mRatio == other.mRatio &&
- width == other.width &&
- height == other.height &&
- whRatio == other.whRatio &&
- density == other.density &&
- isFullScreenDevice == other.isFullScreenDevice &&
- topPadding == other.topPadding &&
- bottomPadding == other.bottomPadding &&
- textScaleFactor == other.textScaleFactor &&
- platformBrightness == other.platformBrightness &&
- viewInsets == other.viewInsets &&
- padding == other.padding &&
- alwaysUse24HourFormat == other.alwaysUse24HourFormat &&
- accessibleNavigation == other.accessibleNavigation &&
- invertColors == other.invertColors &&
- disableAnimations == other.disableAnimations &&
- boldText == other.boldText &&
- orientation == other.orientation);
- @override
- int get hashCode =>
- androidDeviceInfo.hashCode ^
- iosDeviceInfo.hashCode ^
- packageInfo.hashCode ^
- _safeAreaPaddingTop.hashCode ^
- _safeAreaPaddingBottom.hashCode ^
- mSize.hashCode ^
- mRatio.hashCode ^
- width.hashCode ^
- height.hashCode ^
- whRatio.hashCode ^
- density.hashCode ^
- isFullScreenDevice.hashCode ^
- topPadding.hashCode ^
- bottomPadding.hashCode ^
- textScaleFactor.hashCode ^
- platformBrightness.hashCode ^
- viewInsets.hashCode ^
- padding.hashCode ^
- alwaysUse24HourFormat.hashCode ^
- accessibleNavigation.hashCode ^
- invertColors.hashCode ^
- disableAnimations.hashCode ^
- boldText.hashCode ^
- orientation.hashCode;
- @override
- String toString() {
- return 'AppConfig{' +
- ' androidDeviceInfo: $androidDeviceInfo,' +
- ' iosDeviceInfo: $iosDeviceInfo,' +
- ' packageInfo: $packageInfo,' +
- ' _safeAreaPaddingTop: $_safeAreaPaddingTop,' +
- ' _safeAreaPaddingBottom: $_safeAreaPaddingBottom,' +
- ' mSize: $mSize,' +
- ' mRatio: $mRatio,' +
- ' width: $width,' +
- ' height: $height,' +
- ' whRatio: $whRatio,' +
- ' density: $density,' +
- ' isFullScreenDevice: $isFullScreenDevice,' +
- ' topPadding: $topPadding,' +
- ' bottomPadding: $bottomPadding,' +
- ' textScaleFactor: $textScaleFactor,' +
- ' platformBrightness: $platformBrightness,' +
- ' viewInsets: $viewInsets,' +
- ' padding: $padding,' +
- ' alwaysUse24HourFormat: $alwaysUse24HourFormat,' +
- ' accessibleNavigation: $accessibleNavigation,' +
- ' invertColors: $invertColors,' +
- ' disableAnimations: $disableAnimations,' +
- ' boldText: $boldText,' +
- ' orientation: $orientation,' +
- '}';
- }
- AppConfig copyWith({
- AndroidDeviceInfo? androidDeviceInfo,
- IosDeviceInfo? iosDeviceInfo,
- PackageInfo? packageInfo,
- double? safeAreaPaddingTop,
- double? safeAreaPaddingBottom,
- Size? mSize,
- double? mRatio,
- double? width,
- double? height,
- double? whRatio,
- double? density,
- bool? isFullScreenDevice,
- double? topPadding,
- double? bottomPadding,
- double? textScaleFactor,
- Brightness? platformBrightness,
- EdgeInsets? viewInsets,
- EdgeInsets? padding,
- bool? alwaysUse24HourFormat,
- bool? accessibleNavigation,
- bool? invertColors,
- bool? disableAnimations,
- bool? boldText,
- Orientation? orientation,
- }) {
- return AppConfig(
- androidDeviceInfo: androidDeviceInfo ?? this.androidDeviceInfo,
- iosDeviceInfo: iosDeviceInfo ?? this.iosDeviceInfo,
- packageInfo: packageInfo ?? this.packageInfo,
- safeAreaPaddingTop: safeAreaPaddingTop ?? this._safeAreaPaddingTop,
- safeAreaPaddingBottom: safeAreaPaddingBottom ?? this._safeAreaPaddingBottom,
- mSize: mSize ?? this.mSize,
- mRatio: mRatio ?? this.mRatio,
- width: width ?? this.width,
- height: height ?? this.height,
- whRatio: whRatio ?? this.whRatio,
- density: density ?? this.density,
- isFullScreenDevice: isFullScreenDevice ?? this.isFullScreenDevice,
- topPadding: topPadding ?? this.topPadding,
- bottomPadding: bottomPadding ?? this.bottomPadding,
- textScaleFactor: textScaleFactor ?? this.textScaleFactor,
- platformBrightness: platformBrightness ?? this.platformBrightness,
- viewInsets: viewInsets ?? this.viewInsets,
- padding: padding ?? this.padding,
- alwaysUse24HourFormat: alwaysUse24HourFormat ?? this.alwaysUse24HourFormat,
- accessibleNavigation: accessibleNavigation ?? this.accessibleNavigation,
- invertColors: invertColors ?? this.invertColors,
- disableAnimations: disableAnimations ?? this.disableAnimations,
- boldText: boldText ?? this.boldText,
- orientation: orientation ?? this.orientation,
- );
- }
- //</editor-fold>
- }
|