flutter
type_error
ai_generated
true
类型 'Null' 不是类型 'int' 的子类型,类型转换失败
type 'Null' is not a subtype of type 'int' in type cast
ID: flutter/typeerror-null-not-subtype-int
88%修复率
84%置信度
1证据数
2023-05-12首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| Flutter 3.0 | active | — | — | — |
| Flutter 3.3 | active | — | — | — |
| Flutter 3.7 | active | — | — | — |
根因分析
在期望非空 int 的地方分配或返回了 null 值,通常是由于 JSON 解析或 API 响应中缺少空安全处理。
English
A null value was assigned or returned where a non-nullable int was expected, often due to missing null-safety handling in JSON parsing or API responses.
官方文档
https://dart.dev/null-safety解决方案
-
Use null-safe access with a fallback value: int value = (json['field'] as int?) ?? 0;
-
Use a JSON parsing library like 'json_serializable' with nullable fields defined properly: @JsonKey(name: 'field', defaultValue: 0) int field;
-
Add explicit null checks before casting: if (json['field'] != null) { int value = json['field'] as int; } else { // handle null case }
无效尝试
常见但无效的做法:
-
Using 'as int' without null check
90% 失败
If the value is null, the cast will throw the same error.
-
Ignoring null-safety and using 'dynamic' instead of 'int'
70% 失败
Defeats the purpose of null safety and can lead to runtime type errors elsewhere.
-
Assuming the API will never return null for that field
80% 失败
APIs can change or return null for missing fields; brittle assumption.