三个步骤:
安卓注册通信
安卓配置权限
flutter调用
1.
android\app\src\main\kotlin\......\MainActivity.kt
package (******你的包名******)
import android.os.Bundle
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
class MainActivity: FlutterActivity() {
private val CHANNEL = "(******一般用你的包名******)/messageChannel"
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
if (call.method == "backDesktop") {
moveTaskToBack(false)
result.success(null)
} else {
result.notImplemented()
}
}
}
}
2.
...其他代码
</application>
<!-- flutter通信加上下面这一行 -->
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
3.
写在任何地方
class AndroidBackTop {
//初始化通信管道-设置退出到手机桌面
static MethodChannel platform = const MethodChannel('(******一般用你的包名******)/messageChannel/messageChannel');
static Future<bool> backDeskTop() async {
try {
await platform.invokeMethod('backDesktop');
return Future.value(true);
} on PlatformException catch (e) {
print("通信失败${e.message}");
return Future.value(false);
}
}
}
写在首页的最外层
@override
Widget build(BuildContext context) {
return GetBuilder<LayoutController>(
init: LayoutController(),
id: "layout",
builder: (_) {
return WillPopScope(
onWillPop: () async {
Logger().i('back');
AndroidBackTop.backDeskTop(); //设置为返回不退出app
return false; //一定要return false
},
child: _buildView(),
);
},
);
}