用户登录

在 BLoC 里面,需要创建 Sink 还有 Stream .. 这些东西我们得找一种方法传递给其它的小部件使用 .. 这里我们可以使用之前介绍过的 InheritedWidget .. 你也可以使用其它的方法传递它们 ..

先创建一个 Bloc .. 添加一个类 .. 名字可以是 CounterBloc .. 里面先随便添加一个方法 .. 比如 log .. 这个方法做的事情就是在控制台上输出一个 BLoC ..

再去创建一个 InheritedWidget,把这个 BLoC 传递给小部件使用 .. 添加一个 InheritedWidget .. 小部件的名字可以是在 CounterProvider ..

里面添加一个 CounterBloc 类型的值 .. 名字是 bloc .. 在类的构造函数里面,添加一个 this.bloc .. 使用这个小部件的时候需要提供一个 bloc 还有一个 child 属性 ..

在 InheritedWidget 里面可以添加一个 of 这个静态方法,使用这个方法我们可以得到 InheritedWidget 里面带的东西 .. 这里就是这个 bloc 属性的值 ..

下面我们要把创建好的这个 InheritedWiget 放在小部件树的某个位置上 .. 比如可以放在 BlocDemo 这里 .. 用一个小部件包装一下这个 Scaffold .. 名字是 CounterProvider .. 小部件除了 child 属性,还需要一个 bloc .. 新建一个 CounterBloc ...

这样在这个小部件下面的所有的小部件都可以得到这个 CounterBloc 里的东西 ..

先在这个 CounterActionButton 小部件的 build 方法里面 .. 添加一个 CounterBloc .. 名字是 _counterBloc .. 它的值是 CounterProvider.of(context).bloc .. .

这样我们就可以在这里使用 CounterBloc 里的东西了 .. 设置一下 FloatingActionButton 的点按回调 .. 里面用一下 _counterBloc 上的 log 方法 ..

复制一下这个 _counterBloc ..

在 CounterHome 的 build 方法里面,也添加一个 _counterBloc ..

然后设置一下 ActionChip 的点按回调 .. 里面用一下 _counterBloc 上的 log ... 保存一下文件 .. 打开编辑器的调试控制台 ..

按一下应用界面上的这个漂浮动作按钮 .. 现在按它的时候会执行 CounterBloc 里的 log 方法 .. 在控制台上会输出一个 Bloc ..

再按一下这个 ActionChip ... 同样会执行 CoutnerBloc 里的 log ... 它在控制台上输出一个字符串,就是这个 Bloc ..

使用 InheritedWidget 传递 BLoC《 Flutter 移动应用:BLoC 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点