Flutter自定义StatefulWidget代码为何触发hitbox异常与空值检查报错
问题根因
- 原始空报错的直接原因:你在
NoteState的构造函数中直接访问了widget属性。State实例刚被创建时还未和对应的StatefulWidget绑定,widget属性此时为null,触发了空检查运算符的空值异常。 - 后续的布局相关报错属于次生问题:空异常抛出后Flutter会自动创建
ErrorWidget替代你编写的Note组件,ErrorWidget的布局状态异常触发了碰撞检测相关的报错。
修复方案
不要在State的构造函数中访问widget属性,改用官方推荐的initState生命周期方法做初始化操作,修正后的代码如下:
class Note extends StatefulWidget { final String initialValue; const Note({Key? key, this.initialValue = ""}) : super(key: key); @override State<Note> createState() => NoteState(); } class NoteState extends State<Note> { late String value; @override void initState() { super.initState(); // initState执行时State已经和Widget完成绑定,widget属性可用 value = widget.initialValue; } @override Widget build(BuildContext context) { return Text(value); } }
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

