需求是這樣的:我們現在要在 app 裡頭接收一個 stream,在 stream 中資料更新時,要更新 app 畫面中顯示的內容。不過,這個 stream 給資料的速度太快了,至少,比我們想要更新畫面的頻率來得更快,我們想要只根據一定的頻率,依據 stream 更新畫面。
如果原本的 code 像這樣:
myStream.listen((data) {
// Do something with data
});
// Do something with data
});
我們可以簡單改寫一下,將這個 stream 與另外一個 perodic 的 stream 合併在一起。
import 'package:async/async.dart';
final periodic = Stream.periodic(Duration(milliseconds: 100));
final zip = StreamZip([myStream, periodic]);
zip.listen((data) {
final zip = StreamZip([myStream, periodic]);
zip.listen((data) {
final desired = data[0]
// Do something with data
// Do something with data
});
StreamZip 可以合併多個 stream,當兩個 stream 都收到更新時,才會觸發,所以,就算 myStream 已經接收到資料,我們的 app 也還是會等到下次 periodic 這個 stream 被觸發時,才會去做我們指定的對應動作。
沒有留言:
張貼留言