Stream

StreamBuilder(

  Stream:_StreamDemo.Stream,

  builder:(context, snapshot){

    return Text('${snapshot.data}');

  },

),

 

 

import 'package:flutter/material.dart';
import 'dart:ui';
import 'dart:async';

void main()=>runApp(MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Stream study'),
),
body: StreamDemoHomeState(),
),
);
}
}

class StreamDemoHomeState extends StatefulWidget {
@override
_StreamDemoHomeStateState createState() => _StreamDemoHomeStateState();
}

class _StreamDemoHomeStateState extends State<StreamDemoHomeState> {
StreamSubscription _streamDemoSubscription;
StreamController<String> _streamDemo;
@override
void dispose() {
// TODO: implement dispose
_streamDemo.close();
super.dispose();
}
@override
void initState() {
super.initState();
// TODO: implement initState
_streamDemo =StreamController<String>();
//Stream<String> _streamDemo=Stream.fromFuture(fetchData());
print('Start listening on a stream');
_streamDemoSubscription=_streamDemo.stream.listen(onData,onError: onError, onDone: onDone);
print('Initilization complete');
}

void onData(String data){
print('$data');
}
void onError(error){
print('Error:$error');
}
void onDone(){
print('done');
}
Future<String> fetchData()async{
await Future.delayed(Duration(seconds: 5));
return 'hello ~';
}
void _pauseStream(){
print('Pause subscription');
_streamDemoSubscription.pause();
}
void _resumeStream(){
print('Resume subscription');
_streamDemoSubscription.resume();
}
void _cancelStream(){
print('Cancel subscription');
_streamDemoSubscription.cancel();
}
void _addDataToStream()async{
print('add data to stream');
String data=await (fetchData());
_streamDemo.add(data);
}
@override
Widget build(BuildContext context) {
return Container(
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
FlatButton(
onPressed:_addDataToStream,
child: Text('add'),
),
FlatButton(
onPressed:_pauseStream,
child: Text('pause'),
),
FlatButton(
onPressed: _resumeStream,
child: Text('resume'),
),
FlatButton(
onPressed: _cancelStream,
child: Text('cancel'),
),
],
),
),
);
}
}

 

posted @ 2019-04-23 10:36  braveheart007  阅读(181)  评论(0编辑  收藏  举报