Flutter StreamController 是Flutter中的一个重要类,它用于向订阅者发送一系列异步事件,在开发中非常实用。下面是StreamController的用法和代码演示:
- 创建一个StreamController对象
StreamController controller = StreamController();
- 监听流中的值并做出相应的操作
controller.stream.listen((value) {
// 处理接收到的数据
});
- 发送数据到流中
controller.add('Hello World');
- 关闭StreamController
controller.close();
完整演示代码:
import 'dart:async';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
StreamController<String> _streamController = StreamController<String>();
StreamSubscription<String> _streamSubscription;
@override
void initState() {
super.initState();
_streamSubscription = _streamController.stream.listen(
(value) {
print(value);
},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('StreamController Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
child: Text('Add Data To Stream'),
onPressed: () {
_streamController.add('Hello World');
},
),
RaisedButton(
child: Text('Close Stream'),
onPressed: () {
_streamController.close();
},
),
],
),
),
);
}
@override
void dispose() {
super.dispose();
_streamSubscription?.cancel();
_streamController?.close();
}
}