选中Android目录--右键--选中flutter---Open for Editing in Android Studio
问题1:flutter不能点击时,打开mainactivity类
点击失败,需要配置Android API版本
问题2:还是不行,在Android项目下创建一个xxx_android.iml文件,xxx 代表文件名,虽然可以指定为任意符合命名规范的字符,但一般会把 Flutter 项目的名字作为文件名
参考:
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android" name="Android">
<configuration>
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="GEN_FOLDER_RELATIVE_PATH_APT" value="/gen" />
<option name="GEN_FOLDER_RELATIVE_PATH_AIDL" value="/gen" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/app/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/app/src/main/res" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/app/src/main/assets" />
<option name="LIBS_FOLDER_RELATIVE_PATH" value="/app/src/main/libs" />
<option name="PROGUARD_LOGS_FOLDER_RELATIVE_PATH" value="/app/src/main/proguard_logs" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/app/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
</content>
<orderEntry type="jdk" jdkName="Android API 30 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Flutter for Android" level="project" />
</component>
</module>
原生与Flutter数据交互,主要就是构建好通道机制
Flutter 与原生交互使用Platform Channel。Flutter定义了三种不同类型的Channel,它们分别是: 1.BasicMessageChannel:用于传递字符串和半结构化的信息,可持续通信,收到消息后可以回复此次消息。场景:消息互发(双向有返回值,可持续通信) 2.MethodChannel:用于传递方法调用。场景:native与flutter的方法调用(双向有返回值,一次性通信) 3.EventChannel: 用于事件型的通信,仅支持 native 到 Flutter 的单向传递。场景:通常用于状态端监听,比如网络变化、传感器数据、电量更新或声音改变(仅支持数据单向传递,无返回值)
三种Channel之间互相独立,各有用途,但它们在设计上却非常相近。每种Channel均有三个重要成员变量: name: String类型,代表Channel的名字,也是其唯一标识符。 messager:BinaryMessenger类型,代表消息信使,是消息的发送与接收的工具。 codec: MessageCodec类型或MethodCodec类型,代表消息的编解码器。
使用MethodChannel方式
iOS通常有3种方式:
通过 CocoaPods 引入 Flutter SDK
通过 framework 的形式引入
将 Flutter 应用和插件嵌入 Xcode
而 Android 有2种方式:
- 通过 AAR 引入
- 通过 submodule 源码引入
将 Flutter 集成到现有应用 - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter
Flutter与iOS原生混合开发
Flutter混合开发架构之Channel