Flutter實戰(zhàn) 開發(fā)Flutter插件

2021-03-09 14:02 更新

下面我們通過一個獲取電池電量的插件來介紹一下 Flutter 插件的開發(fā)流程。該插件中我們在 Dart 中通過getBatteryLevel 調用 Android BatteryManager API 和 iOS device.batteryLevel API。

#創(chuàng)建一個新的應用程序項目

首先創(chuàng)建一個新的應用程序:

  • 在終端中運行:flutter create batterylevel

默認情況下,模板支持使用 Java 編寫 Android代碼,或使用 Objective-C 編寫 iOS 代碼。要使用 Kotlin 或 Swift,請使用 -i 和 / 或 -a 標志:

  • 在終端中運行: flutter create -i swift -a kotlin batterylevel

#創(chuàng)建Flutter平臺客戶端

該應用的State類擁有當前的應用狀態(tài)。我們需要延長這一點以保持當前的電量

首先,我們構建通道。我們使用MethodChannel調用一個方法來返回電池電量。

通道的客戶端和宿主通過通道構造函數(shù)中傳遞的通道名稱進行連接。單個應用中使用的所有通道名稱必須是唯一的; 我們建議在通道名稱前加一個唯一的“域名前綴”,例如samples.flutter.io/battery。

  1. import 'dart:async';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter/services.dart';
  4. ...
  5. class _MyHomePageState extends State<MyHomePage> {
  6. static const platform = const MethodChannel('samples.flutter.io/battery');
  7. // Get battery level.
  8. }

接下來,我們調用通道上的方法,指定通過字符串標識符調用方法getBatteryLevel。 該調用可能失敗(平臺不支持平臺 API,例如在模擬器中運行時),所以我們將 invokeMethod 調用包裝在 try-catch 語句中。

我們使用返回的結果,在setState中來更新用戶界面狀態(tài)batteryLevel。

  1. // Get battery level.
  2. String _batteryLevel = 'Unknown battery level.';
  3. Future<Null> _getBatteryLevel() async {
  4. String batteryLevel;
  5. try {
  6. final int result = await platform.invokeMethod('getBatteryLevel');
  7. batteryLevel = 'Battery level at $result % .';
  8. } on PlatformException catch (e) {
  9. batteryLevel = "Failed to get battery level: '${e.message}'.";
  10. }
  11. setState(() {
  12. _batteryLevel = batteryLevel;
  13. });
  14. }

最后,我們在 build 創(chuàng)建包含一個小字體顯示電池狀態(tài)和一個用于刷新值的按鈕的用戶界面。

  1. @override
  2. Widget build(BuildContext context) {
  3. return new Material(
  4. child: new Center(
  5. child: new Column(
  6. mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  7. children: [
  8. new RaisedButton(
  9. child: new Text('Get Battery Level'),
  10. onPressed: _getBatteryLevel,
  11. ),
  12. new Text(_batteryLevel),
  13. ],
  14. ),
  15. ),
  16. );
  17. }

至此 Flutter 部分的測試代碼寫好了,接下來我們需要實現(xiàn) Android 和 iOS 平臺下的 API,由于平臺 API 實現(xiàn)部分篇幅較大,我們將在接下來的兩節(jié)中,分別介紹 Android 和 iOS 端 API 的實現(xiàn)。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號