flutter iOS獲取手機(jī)充電狀態(tài) 是否在充電

flutter項目中有個需求,針對手機(jī)是否在充電進(jìn)行判斷走不同的業(yè)務(wù)邏輯.

一、錯誤嘗試

1、經(jīng)過查找資料: 需要使用插件battery_plus

battery_plus: ^4.0.2

代碼實現(xiàn)

// 引入
import 'package:battery_plus/battery_plus.dart';

// 實現(xiàn)
final Battery _battery = Battery();
BatteryState state = await _battery.batteryState;、
if (state == BatteryState.charging) {
    // 充電中
 }

2、經(jīng)過嘗試此方法無效.

二、正確方法
思路: 既然flutter插件無用, 只能采用iOS原生的方法,獲取到狀態(tài)后在flutter中讀取
1、先獲取充電狀態(tài) iOS原生文件

// 查詢電池可用狀態(tài)
var enable = UIDevice.current.isBatteryMonitoringEnabled;
//enable = false;
// 設(shè)置狀態(tài)可用
UIDevice.current.isBatteryMonitoringEnabled = true;

// UserDefaults存儲到本地
var user = UserDefaults.standard;

switch UIDevice.current.batteryState {
        case .charging:
            print("充電中");
            user.set("1", forKey: "flutter.iosbattary")
        case .full:
            print("滿電");
            user.set("2", forKey: "flutter.iosbattary")
        case .unplugged:
            print("未插電");
            user.set("3", forKey: "flutter.iosbattary")
        case .unknown:
            print("未知");
            user.set("4", forKey: "flutter.iosbattary")
        default:
            print("未知");
            user.set("5", forKey: "flutter.iosbattary")
        }

2、讀取存儲的電池充電狀態(tài)。 flutter代碼讀取

// 2、電量
var res = SpUtil.getString("iosbattary");
if (res!=null && res.toString()!="3") {
//非插電狀態(tài)
}

3、關(guān)于UserDefaults讀取問題

注意??: 在iOS端存儲時用的key是flutter.iosbattary 在flutter端讀取時用的是:iosbattary
查看flutter端UserDefaults的源碼:

  Future<bool> _setValue(String valueType, String key, Object value) {
    ArgumentError.checkNotNull(value, 'value');
    final String prefixedKey = '$_prefix$key';
    if (value is List<String>) {
      // Make a copy of the list so that later mutations won't propagate
      _preferenceCache[key] = value.toList();
    } else {
      _preferenceCache[key] = value;
    }
    return _store.setValue(valueType, prefixedKey, value);
  }

static const String _prefix = 'flutter.';

注意看prefixedKey = '_prefixkey';
flutter讀取本地數(shù)據(jù)時Key添加了一個flutter.的前綴

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容