gpt4 book ai didi

android - 从 Flutter 的方法 channel 访问 Kotlin 中的参数数据

转载 作者:行者123 更新时间:2023-12-02 16:09:16 26 4
gpt4 key购买 nike

我在 flutter 和 Kotlin 中设置了一个基本的方法 channel 。

以下是我的示例数据:

{    
"user_dob":"15 November 1997",
"user_description":"Hello there, I am a User!",
"user_gender":"Male",
"user_session":"KKDSH3G9OJKJFIHXLJXUGWIOG9UJKLJ98WHIJ"
}

以下方法 channel 可以将数据从 Flutter 传递到 Kotlin 端:

var result = await platform.invokeMethod('updateProfile', data);

以下代码捕获 Kotlin 中的数据:

MethodChannel(flutterView, channel).setMethodCallHandler { call, result ->
if(call.method == "updateProfile"){
var argData = call.arguments
...

现在,argData 包含我刚刚发送的数据,出现两个问题:

  1. 如何从 argdata 访问数据?例如

  2. 如何从此 argData 获取我的 user_dob

以下代码是我当前的解决方案。

val userDOB : String = call.argument("user_dob")

但是抛出以下错误:Kotlin:类型不匹配:推断类型是 String?但需要字符串

Note: When I was sending the map data to the MethodChannel, it was accidentally being sent as a String. To follow THIS method through, please make sure that a Map object is implemented in passing the data.

最佳答案

从 Flutter 的方法 channel 获取方法参数时,传入的数据是一个 json 格式的字符串。

您可以简单地调用call.argument,它将返回一个Nullable字符串。

在您的情况下,您请求一个 String ,在 Kotlin 中是 Nun-null String 对象,但是 call.argument 的返回值json 中可能不存在且为 null。因此,您必须获取一个 String? 而不是一个 Nullable 字符串。

更新

检查并确保 channel 能够将数据传递到 native 。

在 flutter 中:

static const MethodChannel _channel = const MethodChannel('NAME');

在 native 代码中:

val channel = MethodChannel(registrar.messenger(), "NAME");

TL;博士

在 Kotlin 中,对可以为 null 的数据使用 Nullable 对象

val userDOB : String? = call.argument("user_dob")

并将其与 ?.(空安全)一起使用

关于android - 从 Flutter 的方法 channel 访问 Kotlin 中的参数数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59016157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com