W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
下面我們通過一個獲取電池電量的插件來介紹一下 Flutter 插件的開發(fā)流程。該插件中我們在 Dart 中通過getBatteryLevel
調(diào)用 Android BatteryManager
API 和 iOS device.batteryLevel
API。
首先創(chuàng)建一個新的應(yīng)用程序:
flutter create batterylevel
默認(rèn)情況下,模板支持使用 Java 編寫 Android代碼,或使用 Objective-C 編寫 iOS 代碼。要使用 Kotlin 或 Swift,請使用 -i 和 / 或 -a 標(biāo)志:
flutter create -i swift -a kotlin batterylevel
該應(yīng)用的State
類擁有當(dāng)前的應(yīng)用狀態(tài)。我們需要延長這一點以保持當(dāng)前的電量
首先,我們構(gòu)建通道。我們使用MethodChannel
調(diào)用一個方法來返回電池電量。
通道的客戶端和宿主通過通道構(gòu)造函數(shù)中傳遞的通道名稱進(jìn)行連接。單個應(yīng)用中使用的所有通道名稱必須是唯一的; 我們建議在通道名稱前加一個唯一的“域名前綴”,例如samples.flutter.io/battery
。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
...
class _MyHomePageState extends State<MyHomePage> {
static const platform = const MethodChannel('samples.flutter.io/battery');
// Get battery level.
}
接下來,我們調(diào)用通道上的方法,指定通過字符串標(biāo)識符調(diào)用方法getBatteryLevel
。 該調(diào)用可能失敗(平臺不支持平臺 API,例如在模擬器中運(yùn)行時),所以我們將 invokeMethod 調(diào)用包裝在 try-catch 語句中。
我們使用返回的結(jié)果,在setState
中來更新用戶界面狀態(tài)batteryLevel
。
// Get battery level.
String _batteryLevel = 'Unknown battery level.';
Future<Null> _getBatteryLevel() async {
String batteryLevel;
try {
final int result = await platform.invokeMethod('getBatteryLevel');
batteryLevel = 'Battery level at $result % .';
} on PlatformException catch (e) {
batteryLevel = "Failed to get battery level: '${e.message}'.";
}
setState(() {
_batteryLevel = batteryLevel;
});
}
最后,我們在 build 創(chuàng)建包含一個小字體顯示電池狀態(tài)和一個用于刷新值的按鈕的用戶界面。
@override
Widget build(BuildContext context) {
return new Material(
child: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
new RaisedButton(
child: new Text('Get Battery Level'),
onPressed: _getBatteryLevel,
),
new Text(_batteryLevel),
],
),
),
);
}
至此 Flutter 部分的測試代碼寫好了,接下來我們需要實現(xiàn) Android 和 iOS 平臺下的 API,由于平臺 API 實現(xiàn)部分篇幅較大,我們將在接下來的兩節(jié)中,分別介紹 Android 和 iOS 端 API 的實現(xiàn)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: