首页 > 解决方案 > 小部件变量为空颤动

问题描述

我有一个有状态的小部件

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'。” 为什么小部件会为空?我打印出周期所属的列表,但它们都已正确初始化。

标签: flutter

解决方案


不要使用构造函数。而是使用initState

class Foo extends State<Bar> {
  @override
  void initState() {
    // widget is not null here
  }
}

推荐阅读