This is a Flutter plugin for using Android's numerous platform-specific APIs in Flutter apps.
Android only.
dependencies:
flutter_android: ^0.8.0-
Implements bindings to a growing set of Android's platform-specific APIs.
-
Reduces duplication of effort by centralizing Android bindings in a single package.
| Feature | Flutter API |
|---|---|
| Activity launch | android_content.Intent#startActivity() |
| Bluetooth scanning | android_bluetooth.BluetoothLeScanner |
| Distance calculation | android_location.Location.distanceBetween() |
| Face detection | android_media.FaceDetector |
| Heart-rate monitoring | android_hardware.SensorManager.getDefaultSensor() |
| Parcel serialization | android_os.Parcel |
| Sensor event streams | android_hardware.Sensor#subscribe() |
TODO: dirs
import 'package:flutter_android/android_content.dart' show Intent;
await Intent(
action: "android.intent.action.VIEW", // Intent.ACTION_VIEW
data: Uri.parse("https://flutter.dev"),
).startActivity();import 'package:flutter_android/android_os.dart' show Parcel;
var parcel = Parcel.obtain()
..writeBoolean(true)
..writeInt(42)
..writeDouble(3.1415)
..writeString("Hello, world!")
..writeList(<Object>[1, 2, 3])
..writeMap(<String, Object>{"a": 1, "b": 2, "c": 3});
await _channel.invokeMethod('someJavaMethod', parcel.asUint8List());
// In Java, your MethodCallHandler's call.arguments contains the marshaled Parcelimport 'package:flutter_android/android_graphics.dart' show Bitmap;
import 'package:flutter_android/android_media.dart' show Face, FaceDetector;
var photo = Image.asset("images/einstein.png");
var bitmap = Bitmap.fromAssetImage(photo.image as AssetImage);
var detector = FaceDetector(width: 280, height: 396);
for (var face in await detector.findFaces(bitmap)) {
if (face.confidence < Face.CONFIDENCE_THRESHOLD) {
continue; // skip dubious results below the cut-off threshold
}
print("Found a face at (${face.midPoint.x}, ${face.midPoint.y}) with confidence ${face.confidence}");
}import 'package:flutter_android/android_hardware.dart'
show Sensor, SensorEvent, SensorManager;
var sensor = await SensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
var events = await sensor.subscribe();
events.listen((SensorEvent event) {
print(event.values[0]);
});TODO
- iOS is not and cannot be supported.
All
flutter_androidAPIs throw anAssertionErrorif they are invoked when running on iOS. For cross-platform apps, we recommend that you depend on the platform package to conditionalize your use of Android APIs.
import 'package:flutter_android/android.dart' as android;import 'package:flutter_android/android_app.dart' as android_app;import 'package:flutter_android/android_bluetooth.dart' as android_bluetooth;import 'package:flutter_android/android_content.dart' as android_content;ComponentNameContentValuesContext.cacheDirContext.codeCacheDirContext.dataDirContext.externalCacheDirContext.externalFilesDirContext.filesDirContext.getSharedPreferences()Context.getSystemService()Context.noBackupFilesDirContext.packageCodePathContext.packageNameContext.packageResourcePathIntentSharedPreferences
import 'package:flutter_android/android_database.dart' as android_database;import 'package:flutter_android/android_graphics.dart' as android_graphics;import 'package:flutter_android/android_hardware.dart' as android_hardware;import 'package:flutter_android/android_location.dart' as android_location;import 'package:flutter_android/android_media.dart' as android_media;import 'package:flutter_android/android_os.dart' as android_os;BundleEnvironment.dataDirectoryEnvironment.downloadCacheDirectoryEnvironment.externalStorageDirectoryEnvironment.externalStorageStateEnvironment.rootDirectoryEnvironment.isExternalStorageEmulatedEnvironment.isExternalStorageRemovable
- The win32 package provides bindings to the most common Win32 APIs.

