gpt4 book ai didi

dart - Flutter MethodChannel嵌套值: 'List' is not a subtype of type 'FutureOr>>'

转载 作者:IT老高 更新时间:2023-10-28 12:45:17 27 4
gpt4 key购买 nike

我正在编写一个 Flutter 插件,它从平台特定端发送一个 map 列表 (List<Map<String, double>>)。在平台特定方面,我使用默认消息编解码器发送这些对象。

// (example: Android side)

List<Map<String, Double>> out = new ArrayList<>();
... fill the map ...
result.success(out);

我在 Dart 端收到的这些值如下:

static Future<List<Map<String, double>>> getListOfMaps() async {
var traces = await _channel.invokeMethod('getListOfMaps');
print(traces); // works
return traces;
}

打印值会给出正确的值。但是,在函数返回时,我收到以下错误 type 'List<dynamic>' is not a subtype of type 'FutureOr<List<Map<String, double>>>'在运行时,表示从动态值强制转换为特定的Map<String, double>没用。

如何在 Dart 中正确转换来自 MethodChannels 的嵌套值?

最佳答案

正如评论中所指出的,我必须将每个具有未知运行时类型的值单独转换为预期类型。

static Future<List<Map<String, double>>> getListOfMaps() async {
List<dynamic> traces = await _channel.invokeMethod(...);
return traces
.cast<Map<dynamic, dynamic>>()
.map((trace) => trace.cast<String, double>())
.toList();
}

关于dart - Flutter MethodChannel嵌套值: 'List<dynamic>' is not a subtype of type 'FutureOr<List<Map<String, double>>>' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50875003/

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