Android 集成flutter
16lz
2021-01-23
在已有Android原生工程基础上集成Flutter Module。
先说坑
新版flutter SDK已经移除了Flutter.java这个类。因此你想通过Flutter.createView(MainActivity.this,getLifecycle(),"yourRouter");来构建视图是行不通了。
具体步奏
1、使用Android Studio构建Module
创建module成功后,Android Studio会自动引入这个module,无需修改项目配置。
2、配置module路由
void main() { runApp(MyApp(window.defaultRouteName)); // APP初始化}class MyApp extends StatefulWidget { final String router; MyApp(this.router); @override StatecreateState() => MyOSCClientState();}class MyOSCClientState extends State { Color themeColor = ThemeUtils.currentColorTheme; @override void initState() { super.initState(); DataUtils.getColorThemeIndex().then((index) { print('color theme index = $index'); if (index != null) { ThemeUtils.currentColorTheme = ThemeUtils.supportColors[index]; Constants.eventBus .fire(ChangeThemeEvent(ThemeUtils.supportColors[index])); } }); Constants.eventBus.on ().listen((event) { setState(() { themeColor = event.color; }); }); } @override Widget build(BuildContext context) { switch(widget.router){ case '西天取经'://路由1 return MaterialApp(debugShowCheckedModeBanner: false, // 右上角debug标签 theme: ThemeData(primaryColor: themeColor), home: Page1()); default: return MaterialApp(debugShowCheckedModeBanner: false, // 右上角debug标签 theme: ThemeData(primaryColor: themeColor), home: Container()); } }}
3、配置主工程
3.1配置androidmanifest.xml,把FlutterActivity加进去
3.2跳转到flutter module指定页面
startActivity(FlutterActivity.withNewEngine().initialRoute("西天取经").build(mActivity));
单纯的跳转这样就可以了。
还有一种情况是生成Fragment来显示。如下(注:这种情况我是照搬flutter文档的,没有尝试,如果有报错请移步官方文档自行查验)
FlutterFragment flutterFragment = FlutterFragment.withNewEngine() .initialRoute("myInitialRoute/") .build();
更多相关文章
- 几个标签属性的意义
- Android 三角标签(自定义Textview控件)
- Android之Tab分页标签的实现方法一-----TabActivity和TabHost的
- React Native Linking与 Android原生页面路由跳转问题
- Android 总结:打造Android中的流式布局和热门标签(源码有详细注释)
- [Android菜鸟笔记]xml实现编辑框/按钮的椭圆样(shape标签)+应用
- Android开发之实现图片自动滚动显示标签的ViewPager
- 打造自己的标签栏