geo_loc_stream
我用来练习使用Streams的一个简单的Flutter项目。
入门
Flutter中的Streams是什么?
当你想让你的应用接收/与异步数据交互时,就会用到Streams。
例如,如果我们从服务器接收到数据变化,并且我们希望我们的应用程序在变化发生时得到通知,而不是让应用程序检查变化,我们可以使用我们可以订阅的Streams,一旦变化发生,StreamController将监听这些变化,应用程序将根据我们编程的响应方式做出响应。
为了在我们的UI中使用Streams,我们只需将Widget包裹在StreamBuilder中,但我们将如何设置我们的Stream呢?
首先创建一个StreamController(“该控制器允许在其流上发送数据、错误和完成事件”),要能够监听你的流数据,我们使用StreamSubscription(“对来自Stream的事件的订阅。当你使用Stream.listen监听Stream时,会返回一个StreamSubscription对象。”)
要停止你的流发送数据,我们使用.close(),要取消订阅,我们使用.cancel(),这两个函数通常放在dispose方法中。
我从未直接使用过Stream,它们总是通过一个包或与一个包/库(如RxDart)一起使用,但最好能够理解Stream是什么,以便能够使用其中底层有Streams的包。
这是我使用GeoLocation与Streams创建的一个非常简单的例子(当流监听到一个新事件时,文本的颜色就会改变——如果我改变了位置,它也会改变值)。