flutter_api_stub
- 诞生的意义
- flutter_api_stub
-
- [It is used for developing Android native applications efficiently and quickly.](#It is used for developing Android native applications efficiently and quickly.)
- Feature
- [File structure](#File structure)
- [How to use](#How to use)
- Example
诞生的意义
相信很多做Flutter开发的小伙伴们都遇到过Flutter跨平台开发时Android原生端是不带IDE自动补全以及提示的,这对我们的开发非常不友好而且影响开发效率和速度,今天大家有福了!以后可以完全自由发挥这一块了,我把相关的 Flutter API 整理出来抽成了 Module Stub,也就是说后续我们开发只需要导入Module 就可以不需在 Flutter 项目中痛苦挣扎的写原生代码了,就跟平时写代码一样非常方便和效率,写好之后直接平替到你的 Flutter 项目就可以了,请仔细看完文章赶紧上手吧!
flutter_api_stub
It is used for developing Android native applications efficiently and quickly.
Feature
- ✅ In a pure Android native project
- ✅ Without introducing the Flutter SDK / without compiling Flutter
- ✅ Related code such as FlutterPlugin, ActivityAware, and MethodChannel can be written normally
- ✅ The IDE provides code completion and allows compilation
- ✅ When integrating Flutter in the future, there will be zero or minimal changes
File structure
- your-project/
- ├── app/ ← Your android project
- │ └── src/main/java/...
- │
- ├── flutter-api-stub/ ← Flutter API Stub
- │ └── src/main/java/
- │ └── io/flutter/...
- │
- ├── other module/flutter-plugin-impl/ ← Other module/Your flutter flugin impl
- │ └── src/main/java/...
- │
- └── .../
How to use
- 1.git clone https://github.com/Mr-Jiang/flutter_api_stub.git(Clone the repo to your computer)
- 2.Select your target android native project and import it(remeber the type is module)
- 3.Open your android studio ide "Project Structure" menu and click it
- 4.Looking for the "Dependencies" menu item and then click
- 5.Click your "app" module and then click the "+" button add the "flutter_api_stub" library, finally remember to check "apply".
Example
package com.bluetooth.helper;
import androidx.annotation.NonNull;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
public class BleConnectHelperPlugin implements FlutterPlugin, MethodChannel.MethodCallHandler {
final String channelAction = "ble_connect_helper";
private MethodChannel methodChannel;
private BleConnectHelper helper;
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
helper = BleConnectHelper.getInstance(binding.getApplicationContext());
methodChannel = new MethodChannel(binding.getBinaryMessenger(), channelAction);
methodChannel.setMethodCallHandler(this);
}
@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
methodChannel = null;
}
@Override
public void onMethodCall(MethodCall call, MethodChannel.Result result) {
if (call.method.equals("connect")) {
String address = call.argument("address");
helper.connect(address);
} else if (call.method.equals("disconnect")) {
helper.disconnect();
} else {
result.notImplemented();
}
}
}