import 'package:flutter/material.dart'; import 'dart:async'; class StremaDemoContorller extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Strema案例'), ), body: StrameDemoHome(), ); } } class StrameDemoHome extends StatefulWidget { @override _StrameDemoHomeState createState() => _StrameDemoHomeState(); } class _StrameDemoHomeState extends State<StrameDemoHome> { StreamController<String> _strDemo; @override void initState() { // TODO: implement initState super.initState(); _strDemo=StreamController<String>(); _strDemo.stream.listen(onData,onDone: onDone,onError: onError); } @override void dispose() { // TODO: implement dispose //关掉不需要的Stream; _strDemo.close(); super.dispose(); } //监听数据 void onData(data){ print(data); } //捕获错误 void onError(error){ print("error is $error"); } //数据传递完成 void onDone(){ print("数据传递完成"); } Future<String> getData() async { await Future.delayed(Duration(seconds: 3)); return 'hello'; } //添加数据 void _addData() async { String data=await getData(); _strDemo.add(data); } @override Widget build(BuildContext context) { return Container( child: Row( children: <Widget>[ FlatButton( child: Text('添加数据'), onPressed: _addData, ), ], ), ); } }
声明一个StreamController控制器,用来添加数据,关闭Stream
StreamController<String> _strDemo;
监听数据传输的进度
_strDemo.stream.listen(onData,onDone: onDone,onError: onError);
添加数据
//添加数据 void _addData() async { String data=await getData(); _strDemo.add(data); }
给Stream添加多次订阅
创建一个可以多次订阅Stream的Contorller
_strDemo=StreamController.broadcast();
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接