首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不可空实例字段必须是无效的。

不可空实例字段必须是无效的。
EN

Stack Overflow用户
提问于 2022-02-09 04:18:59
回答 5查看 446关注 0票数 0

我对飞镖很陌生。

我在飞镖垫上看了一段udemy课程的教程视频

所以我也用飞镖写的。但它显示出错误的地方。

这是用udemy写的代码。

代码语言:javascript
复制
import 'dart:convert';
  
 void main(){  
  var rawJson = '{"url": "https://helo.com","id": 2}';
  var parsedJson = json.decode(rawJson);
  var imageModel = new ImageModel.fromJson(parsedJson);
     
  print(imageModel.url);
 }

class ImageModel{
  int id;
  String url;
 
  ImageModel.fromJson(parsedJson) {
    id = parsedJson['id'];
    url = parsedJson['url'];
  }
  
   ImageModel(this.id, this.url);
}

在那个视频中,它运行,但对我来说,它显示错误为

代码语言:javascript
复制
Error compiling to JavaScript:
Info: Compiling with sound null safety
Warning: Interpreting this as package URI, 'package:dartpad_sample/main.dart'.
lib/main.dart:15:3:
Error: This constructor should initialize field 'id' because its type 'int' doesn't allow null.
  ImageModel.fromJson(parsedJson) {
  ^
lib/main.dart:12:7:
Info: 'id' is defined here.
  int id;
      ^^
lib/main.dart:15:3:
Error: This constructor should initialize field 'url' because its type 'String' doesn't allow null.
  ImageModel.fromJson(parsedJson) {
  ^
lib/main.dart:13:10:
Info: 'url' is defined here.
  String url;
         ^^^
Error: Compilation failed.

我不知道是什么问题..。你们能帮我排除错误吗?

EN

回答 5

Stack Overflow用户

发布于 2022-02-09 04:46:57

由于您正在使用空安全进行编译,您可能会更改为:

代码语言:javascript
复制
int? id;
String? url;

有关空安全的更多信息,请参阅此链接https://dart.dev/null-safety

票数 0
EN

Stack Overflow用户

发布于 2022-02-09 05:11:46

尝试使用空安全代码:例如:

int?字符串?url;

票数 0
EN

Stack Overflow用户

发布于 2022-02-09 05:24:13

,你会尝试像这样的

代码语言:javascript
复制
import 'dart:convert';
 class ImageModel{
  final int id;
  final String url;

  ImageModel({required this.id, required this.url});

 factory ImageModel.fromJson(Map<String, dynamic> parsedJson) {
  return ImageModel(
    id: parsedJson['id'] as int,
     url: parsedJson['url'] as String,
    );
   }   
  }

 void main() {
   var rawJson = '{"url": "https://helo.com","id": 2}';
   var parsedJson = json.decode(rawJson);
   
   print(parsedJson['url']);
   print(parsedJson['id']);
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71043957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档