我有一个全状态的小部件
class Period extends StatefulWidget{
final StreamController<List<dynamic>> notify = StreamController<List<dynamic>>();
final int period;
Period(List<dynamic> data, this.period){
notify.sink.add(data);
print("created new Period:");
print(period);
}
void dispose() {
notify.close();
}
@override
_PeriodState createState() => _PeriodState();
}
class _PeriodState extends State<Period> {
bool isNull = true;
bool isListening = false;
List<Widget> lessons;
_PeriodState(){
lessons = [(genTime())];
widget.notify.stream.listen(update);
isListening = true;
}
}
但是在行widget.notify.stream.listen(update);
上,它捕获到异常“在null上调用了getter'notify'”。
为什么小部件为空?我打印出了“周期”所属的“列表”,但所有参数都已正确初始化。
答案 0 :(得分:1)
不要使用构造函数。而是使用initState
class Foo extends State<Bar> {
@override
void initState() {
// widget is not null here
}
}