Stream02
import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:math'; void main()=>runApp(MyApp()); class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
} class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
} class _HomePageState extends State<HomePage> {
StreamController<String> _streamController;
StreamSubscription _streamSubscription;
StreamSink _streamSink;
@override
void dispose() {
// TODO: implement dispose
_streamController.close();
super.dispose();
}
@override
void initState() {
// TODO: implement initState
_streamController=StreamController<String>.broadcast();
_streamSink=_streamController.sink;
_streamSubscription=_streamController.stream.listen(onData,onError: onError, onDone: onDone);
super.initState();
}
void addDataToStream()async{
print('begin to add data to stream');
String data=await(fetchData());
_streamSink.add(data);
print('Endding of data to stream');
} pauseStream(){
_streamSubscription.pause();
}
cancelStrem(){
_streamSubscription.cancel();
}
resumeStream(){
_streamSubscription.resume();
} onData(value){print('$value');}
onError(Error){print('$Error');}
onDone(){print('done');} Future<String> fetchData()async{
int _index=0;
List<String> _listStream=['anounce','Bond','Country','Document','Effect','feel','Glove','Hover','Indent','Jack','Kick','Log','Moon','New','Opertiunity','Post','Queen'];
await Future.delayed(Duration(seconds:1));
_index=Random().nextInt(16);
return _listStream[_index];
} @override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Hello World'),),
body: Center(
child: Column(
children: <Widget>[
StreamBuilder(
stream: _streamController.stream,
initialData: '...',
builder:(BuildContext context,snapshot){
return Text('${snapshot.data}');
},
),
RaisedButton(
child: Icon(Icons.add),
onPressed:addDataToStream,
),
RaisedButton(
child: Text('Cancel'),
onPressed:cancelStrem,
),
RaisedButton(
child: Text('Pause'),
onPressed:pauseStream,
),
RaisedButton(
child: Text('Resume'),
onPressed:resumeStream,
),
],
),
),
);
}
}
Stream02的更多相关文章
- 乐字节-Java8新特性之Stream流(上)
上一篇文章,小乐给大家介绍了<Java8新特性之方法引用>,下面接下来小乐将会给大家介绍Java8新特性之Stream,称之为流,本篇文章为上半部分. 1.什么是流? Java Se中对于 ...
- Flink中的算子操作
一.Connect DataStream,DataStream -> ConnectedStream,连接两个保持他们类型的数据流,两个数据流被Connect之后,只是被放在了同一个流中,内部 ...
- IO ——字节流
什么是流? 概念:内存与存储设备之间传输数据的通道.程序运行后保存在内存,文件一般在硬盘中,在程序中读写文件,需要在内存和存储设备中建立通道.数据借助流传输 流的分类: 按流向: 输入流:将存储设备中 ...
随机推荐
- Spring Boot 2.x (二):How Hello World & 热部署
本篇摘要 上一篇文章,我们构建了一个HelloWorld的程序,现在,我们来看一下这个程序,下面是我们这一节要分析的点. spring-boot-starter-boot @SpringBootApp ...
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(4)- Flashloader初体验(blhost)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Flashloader. 在上一篇文章 Serial Downloader模式(sdphost, mf ...
- [JavaScript] JavaScript事件注册,事件委托,冒泡,捕获,事件流
面试题 event 事件 事件委托是什么? 如何阻止事件冒泡,阻止默认事件呢? Javascript 的事件流模型都有什么? 事件绑定和普通事件有什么区别? Event 对象 Event 对象,当事件 ...
- 【.NET Core项目实战-统一认证平台】第十六章 网关篇-Ocelot集成RPC服务
[.NET Core项目实战-统一认证平台]开篇及目录索引 一.什么是RPC RPC是"远程调用(Remote Procedure Call)"的一个名称的缩写,并不是任何规范化的 ...
- 一统江湖的大前端(1)——PPT制作库impress.js
<一统江湖的大前端>系列是自己的学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有点O ...
- 使用asp.net mvc + entityframework + sqlServer 搭建一个简单的code first项目
步骤: 1. 创建一个asp.net mvc 项目 1.1 项目创建好结构如下 2 通过vs安装EntityFramework框架 install-package entityframework 3. ...
- 微服务定义及.Net Core中用的技术
微服务 定义: 它是一种架构模式,提倡将大的单体系统,按业务拆分成一个个较小且独立的服务,服务与服务之前进行相互协作和配合. 历史: 针对互联网行业的蓬勃发展,需要支撑的业务越来越多,越来越大,单体程 ...
- ElasticSearch6学习(1)-安装Elasticsearch
安装准备: 安装Elasticsearch唯一的要求是安装Java8,包括对应的Jdk.其他java9/java10没尝试,考虑兼容问题.我这里只用了java8 安装java8可以参考我之前写的一篇文 ...
- Spring(一)JdbcTemplate的环境搭建
1.建立一个项目,导入jar包(ioc aop dao 连接池 数据库驱动包)拷贝Spring容器对应的配置文件到src下 2.在配置文件中引入外部属性文件 3.配置数据源 4.配置JdbcTempl ...
- XSS Challenges
平台: http://www.zixem.altervista.org/XSS/ level1: Payload: http://www.zixem.altervista.org/XSS/1.php? ...