我是flutter的新手,一直在学习flutter教程,其中有一个变量声明为“Stream usersStream,chatRoomsStream;',因为它给了我一个编译时错误,我在它前面加了关键字'late'。这解决了我的编译时错误。但是,它给了我一个运行时错误,说:延迟初始化错误:字段chatRoomsStream尚未初始化。如何解决此问题?我在网上找不到任何解决这个问题的方法
yqhsw0fo1#
late关键字基本上意味着您将在以后尝试使用变量之前的某个时间给它赋值。例如,可以如下声明变量(例如ScrollController):
late
ScrollController
late ScrollController controller;
之后,比如在initState()方法中,你可以给它一个值:
initState()
controller = ScrollController();
首先,变量有一个"承诺",你很快就会给它一个值,在你给它这个值之前尝试使用它会导致一个错误,然后,在你把它设置为ScrollController之后,你就可以正常使用它了。
您可以创建如下流(例如double s的流):
double
StreamController<double> controller = StreamController<double>();
然后:
Stream stream = controller.stream;
以访问流。然后,您可以通过其控制器与流交互,如下所示:
controller.add(99.0);
您可以侦听流上的更改,如下所示:
StreamSubscription<double> streamSubscription = stream.listen((streamValuesAsTheyCome) { print('Value from controller: $streamValuesAsTheyCome'); });
记住,当您使用完流后,也要取消它们,如下所示:
streamSubscription.cancel();
如果有帮助就告诉我,祝你好运!
1条答案
按热度按时间yqhsw0fo1#
late关键字
late
关键字基本上意味着您将在以后尝试使用变量之前的某个时间给它赋值。例如,可以如下声明变量(例如
ScrollController
):之后,比如在
initState()
方法中,你可以给它一个值:首先,变量有一个"承诺",你很快就会给它一个值,在你给它这个值之前尝试使用它会导致一个错误,然后,在你把它设置为
ScrollController
之后,你就可以正常使用它了。流
您可以创建如下流(例如
double
s的流):然后:
以访问流。
然后,您可以通过其控制器与流交互,如下所示:
您可以侦听流上的更改,如下所示:
记住,当您使用完流后,也要取消它们,如下所示:
如果有帮助就告诉我,祝你好运!