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 ——字节流
什么是流? 概念:内存与存储设备之间传输数据的通道.程序运行后保存在内存,文件一般在硬盘中,在程序中读写文件,需要在内存和存储设备中建立通道.数据借助流传输 流的分类: 按流向: 输入流:将存储设备中 ...
随机推荐
- C#7.0新特性
前言 微软昨天发布了新的VS 2017 ..随之而来的还有很多很多东西... .NET新版本 ASP.NET新版本...等等..太多..实在没消化.. 分享一下其实2016年12月就已经公布了的C#7 ...
- leetcode — same-tree
import java.util.Stack; /** * Source : https://oj.leetcode.com/problems/same-tree/ * * * Given two b ...
- scrapy爬虫学习系列七:scrapy常见问题解决方案
1 常见错误 1.1 错误: ImportError: No module named win32api 官方参考:https://doc.scrapy.org/en/latest/faq.html# ...
- ES6躬行记(14)——函数
在前面的章节中,已陆陆续续介绍了ES6为改良函数而引入的几个新特性,本章将会继续讲解ES6对函数的其余改进,包括默认参数.元属性.块级函数和箭头函数等. 一.默认参数 在ES5时代,只能在函数体中定义 ...
- Shell编程(week4_day3)--技术流ken
本节内容 1. shell流程控制 2. for语句 3. while语句 4. break和continue语句 5. case语句 6. shell编程高级实战 shell流程控制 流程控制是改变 ...
- JavaScript小实例:拖拽应用(二)
经常在网站别人的网站的注册页中看到一个拖拽验证的效果,就是它的验证码刚开始不出来,而是有一个拖拽的条,你必须将这个拖拽条拖到底,验证码才出来,说了感觉跟没说一样,你还是不理解,好吧,我给个图你看看: ...
- 【转载】C#处理空格和换行
使用C#处理字符串是一个常见的情况,当字符串中含有空格或者换行符号的时候,如果业务需要,我们可以通过相应的方法将之处理掉,处理成不含空格和换行符号的字符串,处理的过程使用到正则表达式. 具体函数处理的 ...
- 从零开始学安全(三十五)●mysql 盲注手工自定义python脚本
import requests import string #mysql 手动注入 通用脚本 适用盲注 可以跟具自己的需求更改 def home(): url="url" list ...
- aps.net core mvc中使用session
原因>>用session是想验证 前端输入的验证码和后端存入seesion的是否一致,也可以使用的是TempData[]. 铺垫>> 前端用GetValidateCode()方 ...
- 拯救老旧工程,记桥接SpringMVC与Stripes框架
背景: 公司基础设施部门推出了自己的微服务框架(以下简称M),要求所有业务应用都要接入进去,但坑爹的是M只提供了SpringMVC工程的support,对于采用Stripes作为MVC框架的应用并不支 ...