按了界面上这个漂浮动作按钮,可以使用 Sink 的 add 方法,往 Stream 上添加一个数据 .. Bloc 会发布这个数据到指定的 Stream 上 .. 界面上这个显示计数用的小部件可以使用一个 StreamBuilder 生成,它接受一个 Stream,当 Stream 上的数据有变化的时候,小部件就会被重建 ..
下面我们去创建一下需要的这个 Bloc .. 先创建一个 StreamController .. 名字叫 _counterActionController .. 新建一个 StreamController .. 数据类型是 int ..
这里需要再导入需要的这个 dart:async 包 ..
然后在这个类里面再给它添加一个 getter 方法 .. 它是一个 StreamSink .. 接受的数据的类型是 int .. 这个 Sink 的名字可以叫 counter .. 它的值应该是 _counterActionController.sink ..
这样在我们的小部件里面,可以使用这个 Sink 往这个 Stream 上添加数据 ..
在这个 FloatingActionButton 的点按回调里面 .. 用一下 _counterBloc 上的 counter .. 它是一个 Sink .. 这个 Sink 上面有个 add 方法可以往 stream 上面添加数据 .. 添加一个数字 1 ..
要在 stream 上使用这个 sink 添加的数据 .. 还得去监听一下这个 stream .. 在 CounterBloc 里面 .. 添加一个构造方法 ..
方法里面执行一下 _counterActionController 上的 stream 上的 listen 方法 .. 监听一下这个 stream ... 设置一下有数据的时候要做的事情 .. 这里用一下 onData 这个方法 ..
下面再去定义一下这个方法 ... 名字是 onData .. 接收一个整数类型的参数 .. 名字可以叫 data ..
方法里面先在控制台上输出 stream 上出现的数据 ..
不再需要的 StreamController 可以关掉 .. 添加一个 disponse 方法 .. 里面执行一下 _counterActionController.close() ...
执行一下 hot restart ... 打开控制台 ..
按一下这个动作按钮 ..
在控制上会输出使用 Sink 往 Stream 上添加的这个数据 ..
复制一下这个使用 sink 添加数据的代码 .. 在这个 ActionChip 的点按回调里面,也可以用一下它 ..
现在,按一下界面上这个 ActionChip ... 同样会在控制台上输出一个值 ..