flutter
type_error
ai_generated
true
类型 'List<dynamic>' 不是类型 'List<String>' 的子类型,在类型转换中
type 'List<dynamic>' is not a subtype of type 'List<String>' in type cast
ID: flutter/invalid-runtime-type-cast
95%修复率
90%置信度
1证据数
2023-02-01首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 2.17.0 | active | — | — | — |
| 3.0.0 | active | — | — | — |
| 3.13.0 | active | — | — | — |
| 3.22.0 | active | — | — | — |
根因分析
在未进行显式类型检查的情况下,直接将解码后的 JSON 列表转换为 `List<String>`;JSON 解码返回 `List<dynamic>`。
English
Casting a decoded JSON list directly to `List<String>` without explicit type checking; JSON decode returns `List<dynamic>`.
官方文档
https://dart.dev/guides/language/type-system解决方案
-
Use `List<String>.from()` or `jsonDecode(data).cast<String>().toList()` to safely convert with type checking.
-
Decode with explicit type using `jsonDecode` and then iterate to filter or convert each element.
-
Use a JSON serialization library like `json_serializable` with proper model classes to avoid raw casts.
无效尝试
常见但无效的做法:
-
30% 失败
If any element is not a String, `cast()` throws a runtime error; does not handle mixed types.
-
50% 失败
Type cast fails at runtime; app crashes when the list is accessed.
-
20% 失败
Swallows the error but the list remains untyped; subsequent operations may fail silently.