【问题标题】:'List<dynamic>' is not a subtype of type 'List<String>'“List<dynamic>”不是“List<String>”类型的子类型
【发布时间】:2021-07-17 16:51:17
【问题描述】:

我正在对 Map

   List<String> permissionsAllowed = permissions.keys.toList().map((key)=> 
   key.toString()).toList()

   List<String> permissionsAllowed = permissions.keys.toList().map<String>((key)=> 
   key.toString()).toList()


   List<String> permissionsAllowed = permissions.keys.map((key)=> key.toString()).toList()

   for (int i = 0; i < permissions.keys.toList().length; i++) {
           print(permissions.keys.toList()[i]);
           if (permissions.keys.toList()[i].runtimeType == String) {
             featuresAllowed.add(permissions.keys.toList()[i]);
      }
   }

没有任何帮助,感谢您的帮助

  print(permissions.keys.toList());
  OUTPUT: [inventory, sales]

感谢您抽出宝贵时间

【问题讨论】:

  • 你尝试过类型转换吗?
  • 我有但是我刚刚更新并添加了尝试映射时遇到的另一个错误
  • 编辑后忘记了 toList() permissions.keys.toList().map(...).toList();
  • List&lt;String&gt; permissionsAllowed = permissions.keys.toList() as List&lt;String&gt; ...你可以试试这个。
  • 我确实忘记了抱歉,将其删除,并将尝试提供的解决方案

标签: flutter dart google-cloud-firestore


【解决方案1】:

尝试像这样使用List.from

List<String> permissionsAllowed = List<String>.from(permissions.keys.toList());

【讨论】:

  • 如果密钥不是String,则会出现异常type 'int' is not a subtype of type 'String'
  • 是的,这是假设所有动态数据都是字符串,如果您的数据有变体,那么您必须进行类型检查,或者将它们转换为字符串,然后再传递给List.from
【解决方案2】:

我不确定,但你想找出哪些键是String?如果是这样,下面featuresAllow2 的方法有效:

main(List<String> args) {
  var permissions = {
    'key1': 'value1',
    'key2': 'value2',
    1: 'one',
    2: 'two',
  };
  List<String> featuresAllow = permissions.keys.toList().map((key) {
    return key.toString();
  }).toList();
  print('featuresAllow= $featuresAllow');
  List<String?> featuresAllow2 = permissions.keys
      .toList()
      .map((key) {
        if (key is String) return key;
      })
      .where((key) => key != null)
      .toList();
  print('featuresAllow2= $featuresAllow2');
}

代码:

List<String> permissionsAllowed = List<String>.from(permissions.keys.toList());

如果键不是String,则抛出异常。

【讨论】:

    猜你喜欢
    • 2021-12-29
    • 2023-01-08
    • 2021-07-06
    • 2021-02-17
    • 1970-01-01
    • 2019-11-07
    • 2020-07-03
    • 1970-01-01
    • 2022-10-05
    相关资源
    最近更新 更多