import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:ui';
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 _streamSubsctiption;
StreamSink _streamSink;

@override
void dispose() {
// TODO: implement dispose
_streamController.close();
super.dispose();
}

@override
void initState() {
// TODO: implement initState
print('Create a Stream');
_streamController=StreamController<String>();
_streamSubsctiption=_streamController.stream.listen(onData);
_streamSink=_streamController.sink;
addDataToStream(){
_streamSink.add(fetchData());
}
print('Start Listning Stream');
super.initState();
}

Future<String> fetchData()async{
List<String> _listString=[
'a','b','c''d','e','f''g','h','i''j','k','l''m','n','o','p''q'
];
int count=Random().nextInt(10);
await Future.delayed(Duration(seconds:1));
return _listString[count];
}

void _addDataToStream()async{
print('add data to stream');
String data=await (fetchData());
_streamController.add(data);
}

onData(String data){print('$data');}
onError(error){print('$error');}
onDone(){print('done');}

pauseStream(){_streamSubsctiption.pause();}
cancelStream(){_streamSubsctiption.cancel();}
resumeStream(){_streamSubsctiption.resume();}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('为人民服务',style: TextStyle(fontSize: 18,fontWeight: FontWeight.bold),),
centerTitle: true,
),
body: Center(
child: Column(
children: <Widget>[
RaisedButton(
child: Text('AddDataToStream'),
onPressed: _addDataToStream,
),
RaisedButton(
child: Text('pause'),
onPressed: pauseStream,
),
RaisedButton(
child: Text('cancel'),
onPressed: cancelStream,
),
RaisedButton(
child: Text('resume'),
onPressed: resumeStream,
),
],
),
)
);
}
}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄