在颤振中如何将数据从android模块传递到颤振模块
我已经通过以下方式成功地将颤振模块集成到我的原生android应用程序中 缓存颤振引擎的过程我已经在应用程序类中完成了。我用这个来自android fragment的东西启动了我的颤振屏幕在颤振中如何将数据从android模块传递到颤振模块,android,flutter,Android,Flutter,我已经通过以下方式成功地将颤振模块集成到我的原生android应用程序中 缓存颤振引擎的过程我已经在应用程序类中完成了。我用这个来自android fragment的东西启动了我的颤振屏幕 startActivity( FlutterActivity .withCachedEngine("my_engine_id") .build(currentActivity) ); 现在,我想将我的auth令牌传递给flatter模块以进行api调用
startActivity(
FlutterActivity
.withCachedEngine("my_engine_id")
.build(currentActivity)
);
现在,我想将我的auth令牌
传递给flatter模块以进行api调用
我正在遵循dart代码中创建方法通道的过程,但我不知道在本机端在何处创建方法通道
如果我在project/moduleName/.android/app/src/main/java/com/package/host/MainActivity.java中创建它
它正在给出异常未处理的异常:MissingPluginException(未找到方法的实现
另外请注意,当我在Android studio中创建此颤振模块时,默认情况下,此文件夹位于.gitignore
中
我已经看过一些较老的家庭教师了,但是他们没有这种颤振引擎选项的缓存
请告诉我哪里做错了?
- 首先创建带有通道的颤振平台客户端
- set methodCallHamdler通过相同的通道
请参阅本官方文件-
您需要有颤振引擎的参考,然后使用它来创建方法通道。请考虑到启动颤振活动的活动/片段负责管理方法通道
private const val FLUTTER_ENGINE_ID = "flutter_engine"
private const val CHANNEL = "myApp.flutter.dev/auth"
class MainActivity : AppCompatActivity(R.layout.activity_main) {
private lateinit var flutterEngine: FlutterEngine
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setupFlutterEngine()
setupMethodChannel()
setSupportActionBar(findViewById(R.id.toolbar))
fab.setOnClickListener {
launchFlutterModule()
}
}
private fun setupFlutterEngine() {
createAndConfigureFlutterEngine()
FlutterEngineCache
.getInstance()
.put(FLUTTER_ENGINE_ID, flutterEngine)
}
private fun createAndConfigureFlutterEngine() {
flutterEngine = FlutterEngine(this)
flutterEngine.dartExecutor.executeDartEntrypoint(DartExecutor.DartEntrypoint.createDefault())
}
private fun setupMethodChannel() {
MethodChannel(
flutterEngine.dartExecutor.binaryMessenger,
CHANNEL
).setMethodCallHandler { call, result ->
// All your implementation for auth token
}
}
private fun launchFlutterModule() {
startActivity(getFlutterIntent())
}
private fun getFlutterIntent(): Intent {
return FlutterActivity
.withCachedEngine(FLUTTER_ENGINE_ID)
.backgroundMode(FlutterActivityLaunchConfigs.BackgroundMode.transparent)
.build(this)
}
}
您可以制作一个包装器
,其中可以保存方法通道代码和颤振引擎设置,并且该包装器在应用程序
类中是init,或者可能是init,并在需要的地方注入匕首
或柄
。您可以将简单数据作为请求参数传递。
Android代码:
FlutterActivity
.withNewEngine()
.initialRoute("/MyPage?username=my_user&age=30&gender=male")
.build(MainActivity.this)
颤振代码,我用库来获取参数
Map<String, String?> parameters = Get.parameters;
print("parameters: $parameters");
我知道答案只存在于频道中,但我不知道在哪里实现它的本机端,因为在这种情况下,它不仅是flatter,而且只有一个功能在flatter中。
parameters: {username: my_user, age: 30, gender: male}