Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在颤振中如何将数据从android模块传递到颤振模块_Android_Flutter - Fatal编程技术网

在颤振中如何将数据从android模块传递到颤振模块

在颤振中如何将数据从android模块传递到颤振模块,android,flutter,Android,Flutter,我已经通过以下方式成功地将颤振模块集成到我的原生android应用程序中 缓存颤振引擎的过程我已经在应用程序类中完成了。我用这个来自android fragment的东西启动了我的颤振屏幕 startActivity( FlutterActivity .withCachedEngine("my_engine_id") .build(currentActivity) ); 现在,我想将我的auth令牌传递给flatter模块以进行api调用

我已经通过以下方式成功地将颤振模块集成到我的原生android应用程序中

缓存颤振引擎的过程我已经在应用程序类中完成了。我用这个来自android fragment的东西启动了我的颤振屏幕

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}