17. Stream流操作

Steam 可以未来可以获取一个或多个值, 类似于水流的逻辑, 只要有水过来就会监听到; 同比 Future 只会在未来获取一个值.

final stream=Stream.periodic(const Duration(seconds: 1),(value)=>value);
void initState() {
super.initState();
future.then((value) => print(value));
stream.listen((event) {
print("stream:$event");
});
}

streamBuilder

场景: 将 Stream 流与 Widget 结合到一起的组件, 可实现组件的 局部数据更新

StreamBuilder(
builder:(context,snapshot){
       print(snapshot.connectionState)
  },
   stream:streamFun()
)

snapshot.connectionState的状态

  • waiting 等待中
  • active 获取中
  • none 没有数据流
  • done 已完成

StreamController 监听更精确的数据流

import 'dart:async';
// 定义
final _controller = StreamController<int>();
// 关闭流
void dispose() {
super.dispose();
_controller.close();
}
// 获取流
streamBuilder(
stream:_controller(),
   builder:(context,snapsht){
       
  }
)

默认 StreamControoler 只能有一个监听者,如果出现多个监听可以用 StreamController.broadcast() 创建流

过滤流 stream

StreamBuilder(
stream:_controller.where((value){
       return value > 2;
  })
)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇