文章目录
- 1. 概念介绍
- 2. 使用方法
- 3. 示例代码
我们在上一章回中介绍了通道相关的内容,本章回中将介绍StreamProvider组件.闲话休提,让我们一起Talk Flutter吧。
1. 概念介绍
在Flutter中Stream是经常使用的组件,对该组件的监听可void main() {
///让状态栏和程序的appBar融为一体构成沉浸式效果,android有效果,需要IOS是否有效果
///SystemChrome这个类及其方法只能在main方法中运行,其它地方无法使用
SystemUiOverlayStyle systemUiOverlayStyle = const SystemUiOverlayStyle(
///这两个属性可以控制状态栏为透明色,它可以和appBar的颜色一致,主要是去掉了阴影效果
statusBarColor: Colors.transparent,
statusBarBrightness: Brightness.light,
///修改状态栏中文字的颜色为黑色,没有效果
// statusBarIconBrightness: Brightness.dark,
);
SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
runApp();
}以StremBuilder,对该组件中数据的共享就是需要使用StremProvider。StreamProvider是一个类,
它不是Flutter SDK中自带的类,而是由Provider包提供的类。本章回将介绍如何通过StreamProvider来共享Stream中的数据;
2. 使用方法
- 创建或者获取Stream对象;
- 在根目录下的provider属性中添加StreamProvider;
- 在项目中通过Consumer获取StreamProvider中的数据
使用上面的方法时需要提前导入Provider包,仔细看一下这个使用方法,是不是有种似曾相识的感觉?这种感觉是对的,因为使用StreamProvider共享数据的方法和
使用Provider共享数据的方法相同,只是我们以前介绍的是ChangeNotifierProvider来共享数据。这两个类都是Provider包中的类,只是它们使用的场景不同而
已。我们重点介绍一下创建StreamProvider时使用的构造方法,该方法中有两个必选参数,详细如下:
- Create<Stream?> create:该参数主要用来创建Stream对象;
- T initialData:该参数用设置Stream对象的初始值;
在实际项目中,我们可以自己创建Stream对象,也可以直接使用其它程序创建Stream对象,比如文件读写,网络操作都会产生Stream对象。
3. 示例代码
介绍完使用方法后,我们通过具体的代码来演示如何使用StreamProvider管理数据:
///使用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"**相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!