类型“Null”不是类型转换中类型“List<dynamic>”的子类型

Al *_*mun 10 dart firebase flutter

请任何人都可以解释一下这是什么问题!我收到此错误\n“类型 \'Null\' 不是类型转换中类型 \'List\' 的子类型”

\n

&

\n

“无效参数(onError):Future.catchError 的错误处理程序必须返回 future 类型的值”

\n
factory Talent.fromJson(String userId, dynamic data) {\n    try {\n      print(\'This is the data we are looking for $userId $data\');\n      return Talent(\n        id: userId,\n        awareOf: data[\'awareOf\'],\n        firstName: data[\'firstName\'],\n        lastName: data[\'lastName\'],\n        aliasName: data[\'aliasName\'],\n        useRealName: data[\'useRealName\'] ?? false,\n        revealPicture: data[\'revealPicture\'] ?? false,\n        imageUrl: data[\'imageUrl\'],\n        staticLocation: LocationModel(\n          label: data[\'staticLocation\'][\'label\'],\n          latitude: data[\'staticLocation\'][\'latitude\'],\n          longitude: data[\'staticLocation\'][\'longitude\'],\n        ),\n        searchRadius: data[\'searchRadius\'] ?? 25,\n        willingToMove: data[\'willingToMove\'] ?? false,\n        prefersRemote: data[\'prefersRemote\'] ?? false,\n        yearsOfExperience: data[\'yearsOfExperience\'] ?? 0,\n        salaryExpectation:\n        SalaryExpectation.fromJson(data[\'salaryExpectation\']),\n        hardskills: data[\'hardskills\'] ?? [],\n        softskills: (data[\'softskills\'] as List)?.first?.runtimeType != String\n            ? (data[\'softskills\'] as List)\n            ?.map((json) => Softskill.fromJson(json))\n            ?.toList() ??\n            []\n            : (data[\'softskills\'] as List)\n            ?.map((s) => Softskill.fromJson(json.decode(s)))\n            ?.toList() ??\n            [],\n        studies: (data[\'studies\'] as List)?.first?.runtimeType != String\n            ? (data[\'studies\'] as List)\n            ?.map((s) => Study.fromJson(Map<String, dynamic>.from(s)))\n            ?.toList() ??\n            []\n            : (data[\'studies\'] as List)\n            ?.map((s) => Study.fromJson(json.decode(s)))\n            ?.toList() ??\n            [],\n        apprenticeships:\n        (data[\'apprenticeships\'] as List)?.first?.runtimeType != String\n            ? (data[\'apprenticeships\'] as List)\n            ?.map((s) => Apprenticeship.fromJson(s))\n            ?.toList() ??\n            []\n            : (data[\'apprenticeships\'] as List)\n            ?.map((s) => Apprenticeship.fromJson(json.decode(s)))\n            ?.toList() ??\n            [],\n        coronaHelper: data[\'coronaHelper\'] ?? false,\n        driverLicense: data[\'driverLicense\'] ?? false,\n      );\n    } on Exception catch (e) {\n      Logger().e("Unable to parse Talent $e");\n    }\n    return Talent.fromJson(userId, data);\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

扑动医生-v

\n

[\xe2\x9c\x93] Flutter(频道稳定,2.5.2,在 macOS 11.6 20G165 darwin-arm 上,区域设置 en-DE)\n\xe2\x80\xa2 Flutter 版本 2.5.2,位于 /Users/almamun/Documents /developer/flutter\n\xe2\x80\xa2 上游存储库https://github.com/flutter/flutter.git \n\xe2\x80\xa2 框架修订版 3595343e20(3 周前),2021-09-30 12 :58:18 -0700\n\xe2\x80\xa2 引擎修订版 6ac856380f\n\xe2\x80\xa2 Dart 版本 2.14.3

\n

[\xe2\x9c\x93] Android 工具链 - 为 Android 设备开发(Android SDK 版本 31.0.0)\n\xe2\x80\xa2 Android SDK,位于 /Users/almamun/Library/Android/sdk\n\xe2\x80 \xa2 平台 android-31,构建工具 31.0.0\n\xe2\x80\xa2 Java 二进制文件位于:/Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java\n\xe2\x80 \xa2 Java 版本 OpenJDK 运行时环境(内部版本 11.0.10+0-b96-7249189)\n\xe2\x80\xa2 接受所有 Android 许可证。

\n

[!] Xcode - 为 iOS 和 macOS 开发\n\xe2\x80\xa2 Xcode,位于 /Applications/Xcode.app/Contents/Developer\n\xe2\x80\xa2 Xcode 13.0,构建版本 13A233\n\xe2\x9c \x97 CocoaPods 未安装。\nCocoaPods 用于检索 iOS 和 macOS 平台端的插件代码,该代码响应您在 Dart 端的插件使用情况。\n如果没有 CocoaPods,插件将无法在 iOS 或 macOS 上运行。\n对于更多信息,请参阅https://flutter.dev/platform-plugins \n要安装,请参阅https://guides.cocoapods.org/using/getting-started.html#installation了解说明。

\n

[\xe2\x9c\x93] Chrome - 为网络开发\n\xe2\x80\xa2 Chrome,位于 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

\n

[\xe2\x9c\x93] Android Studio(版本 2020.3)\n\xe2\x80\xa2 Android Studio 位于 /Applications/Android Studio.app/Contents\n\xe2\x80\xa2 Flutter 插件可以从以下位置安装:\ n https://plugins.jetbrains.com/plugin/9212-flutter \n\xe2\x80\xa2 Dart 插件可以从以下位置安装:\n https://plugins.jetbrains.com/plugin/6351-dart \n \xe2\x80\xa2 Java 版本 OpenJDK 运行时环境(内部版本 11.0.10+0-b96-7249189)

\n

[\xe2\x9c\x93] VS Code(版本 1.60.2)\n\xe2\x80\xa2 VS Code 位于 /Users/almamun/Downloads/Visual Studio Code.app/Contents\n\xe2\x80\xa2 Flutter扩展可以从以下位置安装:\n https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

\n

[\xe2\x9c\x93] 连接的设备(2个可用)\n\xe2\x80\xa2 sdk gphone arm64(移动)\xe2\x80\xa2 emulator-5554 \xe2\x80\xa2 android-arm64 \xe2\x80 \xa2 Android 11 (API 30)(模拟器)\n\xe2\x80\xa2 Chrome(网络) \xe2\x80\xa2 chrome \xe2\x80\xa2 web-javascript \xe2\x80\xa2 Google Chrome 94.0.4606.81

\n

ped*_*ont 19

问题是您正在调用运算符is并将值转换为类型List,但该值是null,它不是 的子类型List,因此会出现错误。

null在尝试将其转换为另一种类型(例如 )之前,您必须首先检查您的值是否不是is List

尝试这个:

((data['softskills'] ?? []) as List)
Run Code Online (Sandbox Code Playgroud)