首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在鸽子中使用` type‘类型

如何在鸽子中使用` type‘类型
EN

Stack Overflow用户
提问于 2021-12-05 10:28:17
回答 1查看 313关注 0票数 0

如何将鸽子中的类型指定为Map (例如Map<String, String>),最好是具有动态值类型的映射(Map<String, dynamic> )。在发送推送消息之前,我无法确定data值是什么类型。

尝试1

我尝试使用以下方法来定义一个类:

代码语言:javascript
运行
复制
class RemoteMessage {
  Notification? notification;
  Map<String, dynamic>? data;
}

不幸的是,我收到了一条错误消息:

代码语言:javascript
运行
复制
Error: pigeons/push.dart:6: Generic type arguments must be nullable in field "data" in class "RemoteMessage".
Error: pigeons/push.dart:6: Generic type arguments must be nullable in field "data" in class "RemoteMessage".

企图2

我还尝试将dynamic设置为可选的:

代码语言:javascript
运行
复制
class RemoteMessage {
  Notification? notification;
  Map<String, dynamic?>? data;
}

在这种情况下,我只得到错误的一个实例:

代码语言:javascript
运行
复制
Error: pigeons/push.dart:6: Generic type arguments must be nullable in field "data" in class "RemoteMessage".

尝试3

如果我将类型设为可选(即Map<String?, dynamic>? data; ),则会得到错误:

代码语言:javascript
运行
复制
Unhandled exception:
FileSystemException: Cannot open file, path = './android/app/src/main/java/dev/flutter/pigeon/Pigeon.java' (OS Error: No such file or directory, errno = 2)
#0      _File.open.<anonymous closure> (dart:io/file_impl.dart:356:9)
<asynchronous suspension>
pub finished with exit code 255

摘要

看起来鸽子不支持Mapdynamic,尽管它应该已经支持泛型:https://github.com/flutter/flutter/issues/63468

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-08 21:28:06

在一些关于颤振(12)的问题上,斯图尔特·摩根(一位来自谷歌的开发人员可能在Dart /鸽子上工作)给了我一些帮助,我意识到我的课程应该是这样的:

代码语言:javascript
运行
复制
class RemoteMessage {
  Notification? notification;
  Map<String?, Object?>? data;
}

主要外卖:

  • I Object 应该使用而不是 dynamic,,因为鸽子会在Java、Objective和Dart中生成中断的代码。这是我在使用动态生成代码..。:中报告的一个bug
    • Dart: dynamic.decode()
    • Objective-C: @property(nonatomic, strong, nullable) NSDictionary<NSString *, dynamic *> * data;
    • Java: public void setData(Map<String, dynamic> setterArg) { this.data = setterArg; }

  • 而且,正如文档所述,Pigeon 目前不支持非空类型,所以我应该对所有类型使用?,包括使用String?作为映射键的类型,而不是StringMap<String?, Object?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70233385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档