第一百三十三回 StreamProvier

文章目录

我们在上一章回中介绍了通道相关的内容,本章回中将介绍 StreamProvider组件 .闲话休提,让我们一起Talk Flutter吧。

概念介绍

在Flutter中Stream是经常使用的组件,对该组件的监听可以StremBuilder,对该组件中数据的共享就是需要使用StremProvider。StreamProvider是一个类,它不是Flutter SDK中自带的类,而是由Provider包提供的类。本章回将介绍如何通过StreamProvider来共享Stream中的数据;

使用方法

  1. 创建或者获取Stream对象;
  2. 在根目录下的provider属性中添加StreamProvider;
  3. 在项目中通过Consumer获取StreamProvider中的数据

使用上面的方法时需要提前导入Provider包,仔细看一下这个使用方法,是不是有种似曾相识的感觉?这种感觉是对的,因为使用StreamProvider共享数据的方法和使用Provider共享数据的方法相同,只是我们以前介绍的是ChangeNotifierProvider来共享数据。这两个类都是Provider包中的类,只是它们使用的场景不同而已。我们重点介绍一下创建StreamProvider时使用的构造方法,该方法中有两个必选参数,详细如下:

  • Create<Stream?> create: 该参数主要用来创建Stream对象;
  • T initialData: 该参数用设置Stream对象的初始值;

在实际项目中,我们可以自己创建Stream对象,也可以直接使用其它程序创建Stream对象,比如文件读写,网络操作都会产生Stream对象。

示例代码

介绍完使用方法后,我们通过具体的代码来演示如何使用StreamProvider管理数据:

dart 复制代码
  ///使用StreamProvider共享stream中的数据
  StreamProvider(create:(_) => Stream.periodic(const Duration(seconds: 2),(event)=>(event+1)).take(5),
      initialData: 9),

            ///监听StreamProvider中的数据,这个数据源在main文件中
          Consumer<int>(
              builder: (context,data,_){
                return Text("value: $data");
          }),
  ///监听StreamProvider中的数据
  Consumer<int>(
      builder: (context,data,_){
        return Text("value: $data");
  }),

上面代码中通过Stream的periodic()方法创建了Stream,并将泛型指定为int,默认值为9.注意:创建的StreamProvider需要放在MultiProvider中,示例代码中没有列出来。

编译并且运行上面的程序,就可以在终端打印出Stream中的共享的数据。我在这里就不演示程序的运行结果了,建议大家自己动手去实践。

看官们,与"StremProvider"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

相关推荐
hello world smile4 天前
Flutter UT太多导致跑覆盖率报错
算法·flutter·移动开发·bash
hello world smile4 天前
Flutter 中的那些设计模式的写法(持续更新)
android·flutter·设计模式·移动开发
hello world smile6 天前
Android 实现一个系统级的悬浮秒表
android·移动开发·悬浮秒表
hello world smile8 天前
Flutter常用命令整理
android·flutter·移动开发·android studio·安卓
袁震14 天前
鸿蒙Harmony-多边形绘制组件Polygon使用详解
华为·移动开发·harmonyos·鸿蒙·harmony
袁震14 天前
鸿蒙Harmony-圆形绘制组件Circle使用详解
华为·移动开发·harmonyos·鸿蒙·harmony
第三女神程忆难19 天前
Android Kotlin 高阶函数详解及其在协程中的应用
android·开发语言·kotlin·移动开发·安卓·高阶函数·1024程序员节
少恭写代码19 天前
通过duxapp提供的基础方法、UI组件、全局样式,快速编写项目
react native·移动开发·taro·duxapp
氦客24 天前
浅谈华为 HarmonyOS Next
android·华为·移动开发·harmonyos·next·概念·万物互联
_waylau1 个月前
HarmonyOS NEXT Release版本今日发布
华为·移动开发·harmonyos·arkts·鸿蒙