You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter(VS Code)中自定义类构造函数非空初始化报错如何解决?

问题原因

Dart 2.12及以上版本默认开启空安全机制,要求非可空类型的变量必须完成初始化,不允许存在未赋值的非空变量。
你贴出的自定义类代码中写的是位置参数构造函数,但实际运行时报错指向的代码是命名参数构造函数Quotes({this.text, this.author});。Dart中命名参数默认是可选参数,空安全规则下,非可空类型的可选命名参数要么标记为必填,要么设置默认值,要么将对应属性改为可空类型,否则就会触发你遇到的报错。

解决方法

根据你当前调用类时使用位置参数的写法,最适配的修改方案如下:
直接简化自定义类的构造函数写法,Dart支持构造参数直接赋值给类属性,无需在函数体内手动赋值,修改后代码如下:

class Quotes {
  String text;
  String author;

  Quotes(this.text, this.author);
}

修改后无需调整main.dart中调用Quotes类的代码,直接运行即可解决报错。

如果你后续想使用命名参数的写法,可以参考如下修改方案:

  1. 自定义类构造函数添加required标记必填参数
class Quotes {
  String text;
  String author;

  Quotes({required this.text, required this.author});
}
  1. 同步修改main.dart中调用Quotes类的代码,补充参数名:
List<Quotes> quotes = [
  Quotes(
    text: "Be yoursefl cause everyone else is taken",
    author: "Oscar Wilde"
  ),
  Quotes(
    text: "I have nothing to declare except my genius",
    author: "Einstien"
  ),
  Quotes(
    text: "The truth is rarely pure and never simple",
    author: "Priyanka"
  ),
  Quotes(
    text: "Trust those who are still in the search of truth and not those who has already found one",
    author: "Hey"
  )
];

内容的提问来源于stack exchange,提问作者PRIYANKA CHETTRI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:54:01