Flutter 与 Android
说明
在本人项目中以 aar 的方式,将Flutter接入Android。本文旨在记录,不为教学,不定时更新。
Flutter与Android交互
退出Flutter Activity
Android:
class MyClass(context: Context, route: String) : AbstractFlutterPage(context, route) {
override fun getMethodChannelName(): String {
return "my_package_name/way"
}
override fun onMethodCall(methodCall: MethodCall?, result: MethodChannel.Result?) {
methodCall?.let {
when {
methodCall.method == "popNativePage" -> {
if(mContext is Activity){
mContext.finish()
}
result?.success("")
}
else -> result?.notImplemented()
}
}
}
}
Flutter:
static const methodChannel =
const MethodChannel('my_package_name/way');
void _invokeNativePop() async {
ifYouHaveReturnValue = await methodChannel.invokeMethod("popNativePage");
}
Android调起Flutter
项目中使用Arouter作为路由框架。
Android:
override fun onClick(v: View?) {
when (v?.id) {
R.id.id_name -> {
ARouter.getInstance().build(ARouterConstants.FLUTTER_ACTIVITY)
.withRoute(ARouterConstants.Flutter_Routes.WAY).navigation()
}
}
}
Flutter:
void main() => runApp(_widgetForRoute(ui.window.defaultRouteName));
Widget _widgetForRoute(String route) {
switch (route) {
case 'WAY':
return new MaterialApp(
title: 'MyName',
theme: new ThemeData(
primarySwatch: Colors.blue,
highlightColor: Color(0xFF7B40FF),
primaryColor: Color(0xFF6132CB),
disabledColor: Color(0xFFD7C6FF),
),
home: MyView(),
);
default:
return Center(
child: Text('Unknown route: $route', textDirection: TextDirection.ltr),
);
}
}