flutter - 未处理的异常 : InternalLinkedHashMap<String, Object>' 不是 Map<String, String> 类型的子类型

标签 flutter dart

请参阅我的代码:在 dart 当我尝试分配 值(value)图 参数映射 cleintRequest 我遇到了这个异常,请任何人指导我

 const Map<String, int> value = {"resourceExpiredHour": 24};
  final Map<String, dynamic> params = {
    "cname": '45',
    "uid": '33232',
    "clientRequest": value
  };

最佳答案

您的问题是您误解了 Dart 中的类型系统。变量既有类型,也有你正在创建的对象本身的类型。
如果是 Map起初这可能有点令人困惑。例如。:

  const Map<String, int> value = {"resourceExpiredHour": 24};
  print({
    "cname": '45',
    "uid": '33232',
    "clientRequest": value
  }.runtimeType); // _InternalLinkedHashMap<String, Object>

  print(<String, dynamic>{
    "cname": '45',
    "uid": '33232',
    "clientRequest": value
  }.runtimeType); // _InternalLinkedHashMap<String, dynamic>
如您所见, Map 的类型可以自动确定,也可以通过显式指定类型来强制确定。
在这种情况下,Dart 试图查看用作值的所有不同类型的共同点。在这种情况下,这是 Object自从 StringMap<String, int>除了它们都是对象之外没有任何共同点。
您的问题是,如果您有 disabled implicit type casting,则以下代码不正确:
  final Map<String, dynamic> params = {
    "cname": '45',
    "uid": '33232',
    "clientRequest": value
  };
这里定义的映射将被确定为Map<String, Object>但是您将其强制转换为只能指向 Map<String, dynamic> 的变量这给了你的错误。
一个可能的解决方法是在创建 map 时告诉您实际想要的类型,例如:
  final Map<String, dynamic> params = <String, dynamic>{
    "cname": '45',
    "uid": '33232',
    "clientRequest": value
  };
或者用这个来简化它,因为 tr将自动确定为 Map<String, dynamic> 类型的变量:
  final params = <String, dynamic>{
    "cname": '45',
    "uid": '33232',
    "clientRequest": value
  };
并修复您的示例:
void main() {
  const value = {"resourceExpiredHour": 24};
  final params = <String, dynamic>{
    "cname": '45',
    "uid": '33232',
    "clientRequest": value
  };
  print(params); // {cname: 45, uid: 33232, clientRequest: {resourceExpiredHour: 24}}
}
我还应该适本地补充一下 dynamic这个特定示例实际上不需要,因为我们也可以这样做(因为 Map<String, Object>params 的完全好类型):
void main() {
  const value = {"resourceExpiredHour": 24};
  final params = {
    "cname": '45',
    "uid": '33232',
    "clientRequest": value
  };
  print(params); // {cname: 45, uid: 33232, clientRequest: {resourceExpiredHour: 24}}
}

关于flutter - 未处理的异常 : InternalLinkedHashMap<String, Object>' 不是 Map<String, String> 类型的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63188589/

相关文章:

css - 如何在 flutter/dart 中使用设定大小的自定义字体?

ios - Flutter 意外退出,Error reading dependency

css - 直接在 polymer 中设计元素样式是不好的做法吗?

android - flutter 运行错误,并且gradle失败,退出代码为1

flutter - flutter 中 firestore 中的对象是否有转换器方法?

layout - flutter |如何在任何叠加层之上显示 AlertDialog?

android - 如何修复 webview_flutter 中的白屏?

flutter - 从Cloud FireStore提取字符串类型的数据

dart - Flutter:将数据从 TabBarView (StatefullWidgets) 发送回主脚手架

angular - 如何在 Dart 上的 Angular 2 中使用参数嵌套 2 个或更多路由级别