W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
下面我們通過一個(gè)獲取電池電量的插件來介紹一下 Flutter 插件的開發(fā)流程。該插件中我們?cè)?Dart 中通過getBatteryLevel
調(diào)用 Android BatteryManager
API 和 iOS device.batteryLevel
API。
首先創(chuàng)建一個(gè)新的應(yīng)用程序:
flutter create batterylevel
默認(rèn)情況下,模板支持使用 Java 編寫 Android代碼,或使用 Objective-C 編寫 iOS 代碼。要使用 Kotlin 或 Swift,請(qǐng)使用 -i 和 / 或 -a 標(biāo)志:
flutter create -i swift -a kotlin batterylevel
該應(yīng)用的State
類擁有當(dāng)前的應(yīng)用狀態(tài)。我們需要延長這一點(diǎn)以保持當(dāng)前的電量
首先,我們構(gòu)建通道。我們使用MethodChannel
調(diào)用一個(gè)方法來返回電池電量。
通道的客戶端和宿主通過通道構(gòu)造函數(shù)中傳遞的通道名稱進(jìn)行連接。單個(gè)應(yīng)用中使用的所有通道名稱必須是唯一的; 我們建議在通道名稱前加一個(gè)唯一的“域名前綴”,例如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)識(shí)符調(diào)用方法getBatteryLevel
。 該調(diào)用可能失敗(平臺(tái)不支持平臺(tái) API,例如在模擬器中運(yùn)行時(shí)),所以我們將 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;
});
}
最后,我們?cè)?build 創(chuàng)建包含一個(gè)小字體顯示電池狀態(tài)和一個(gè)用于刷新值的按鈕的用戶界面。
@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 部分的測(cè)試代碼寫好了,接下來我們需要實(shí)現(xiàn) Android 和 iOS 平臺(tái)下的 API,由于平臺(tái) API 實(shí)現(xiàn)部分篇幅較大,我們將在接下來的兩節(jié)中,分別介紹 Android 和 iOS 端 API 的實(shí)現(xiàn)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: