You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Objective-C的NSDictionary传递到Dart并选择对应接收类型

问题结论

Dart侧接收ObjC返回的NSDictionary类型数据,对应使用Map类型即可,可根据实际场景选择泛型限定。

原因说明

Flutter MethodChannel内置了平台侧与Dart侧的标准类型映射规则,ObjC的NSDictionary会被自动序列化转换为Dart的Map对象,对应映射关系如下:

  • 通用场景下NSDictionary -> Map<dynamic, dynamic>
  • 若NSDictionary的键全部为NSString类型,可对应Map<String, dynamic>做更精准的类型限定
代码示例

Dart侧接收写法

// 通用场景:字典键类型不固定时使用
Map<dynamic, dynamic>? result = await channel.invokeMethod('methodName');

// 适配你的业务场景:所有键都是字符串,可明确泛型为String
Map<String, dynamic>? result = await channel.invokeMethod('methodName');

// 取值示例
var obj1 = result?['obj1'];
String? obj2 = result?['obj2'] as String?;
注意事项
  • 因为MethodChannel返回值可能为空,建议添加空安全标识?避免空异常
  • 若字典内部的value是自定义对象,需要单独做自定义序列化处理,基础类型不需要额外操作

内容的提问来源于stack exchange,提问作者ccd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:18:05