Flutter 与 Android
16lz
2021-01-23
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), ); }}
更多相关文章
- Android Studio快捷键、配置 Android Studio、cmake配置Android
- android原生项目整合ReactNative
- 【Android 应用开发】GitHub 优秀的 Android 开源项目
- library project 和android项目
- android studio打开react-native的android工程项目时预编译失败
- Android实时监控项目第一篇:项目分析及AVD模拟效果图
- Android快速开发架构PlanA(二),简单粗暴的路由管理PRouter
- 我所理解的Android模块化(一)——模块化概念和路由
- 个人对android中项目命名规则的整理