안드로이드 고유의 플랫폼 API에 액세스할 수 있도록 해주는 플러터 플러그인으로, 개발자가 플러터 앱 내에서 네이티브 안드로이드 기능을 활용할 수 있게 합니다. 하나의 패키지에 안드로이드 바인딩을 중앙 집중화함으로써 코드 중복을 줄이고 프로젝트 간 개발을 간소화합니다. 플러터의 플랫폼 채널 시스템과 원활하게 통합되도록 설계되어, Dart와 네이티브 안드로이드 코드 간의 효율적인 통신을 가능하게 합니다. 안드로이드 고유의 장치 수준 기능 및 시스템 상호작용을 지원합니다.
사용 사례
Android 전용 시스템 기능에 액세스하기
네이티브 안드로이드 라이브러리 통합
Flutter 프로젝트 간 코드 중복 줄이기
플랫폼 최적화된 Android 경험 구축
Flutter에서 고급 장치 제어 활성화
주요 기능
중앙 집중형 Android API 바인딩
네이티브 통합을 위한 최소한의 보일러플레이트
Flutter의 플랫폼 채널을 지원합니다
유지보수를 고려하여 설계됨
오픈소스이며 커뮤니티 주도
적합한 대상
Android 중심의 Flutter 개발자
여러 개의 Flutter 앱을 유지 관리하는 팀
심층적인 Android 통합이 필요한 프로젝트
중복된 플랫폼 코드를 피하는 개발자
고려 사항
Android 플랫폼에 한정
Android 네이티브 개발에 대한 지식이 필요합니다
크로스 플랫폼 전용 사용 사례에 적합하지 않습니다
플랫폼 채널의 올바른 설정에 의존
새로운 Android SDK 버전을 위해 업데이트가 필요할 수 있습니다
원본 README
연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.
Flutter Android Bindings
This is a Flutter plugin for using Android's
numerous platform-specific APIs in Flutter apps.
import'package:flutter_android/android_os.dart'showParcel;
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 Parcel
Face detection
import'package:flutter_android/android_graphics.dart'showBitmap;
import'package:flutter_android/android_media.dart'showFace, FaceDetector;
var photo = Image.asset("images/einstein.png");
var bitmap = Bitmap.fromAssetImage(photo.image asAssetImage);
var detector = FaceDetector(width: 280, height: 396);
for (var face inawait 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}");
}
Heart-rate monitoring
import'package:flutter_android/android_hardware.dart'showSensor, SensorEvent, SensorManager;
var sensor = awaitSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
var events = await sensor.subscribe();
events.listen((SensorEvent event) {
print(event.values[0]);
});
Frequently Asked Questions
TODO
Caveats
iOS is not and cannot be supported.
All flutter_android APIs throw an AssertionError if 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.