I want to know why my stream don't throw any error even if I don't use the asBroadcastStream()
method ?
Generally if we want to listen the stream
twice we need to put asBroadcastStream()
method. but it works fine without the method.
class PlayScreen extends StatefulWidget {
PlayScreen({Key? key}) : super(key: key);
@override
State<PlayScreen> createState() => _PlayScreenState();
}
class _PlayScreenState extends State<PlayScreen> {
Stream<int> generateStream(int max) async* {
for (int i = 0; i < max; i++) {
await Future.delayed(const Duration(seconds: 1));
yield i;
}
}
Stream get numberStream => generateStream(1000);
int currentNumber = -1;
int anotherNumber = -1;
void init() {
numberStream.listen((event) {
setState(() {
currentNumber = event;
});
});
numberStream.listen((event) {
setState(() {
anotherNumber = event;
});
});
}
@override
void initState() {
super.initState();
init();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
actions: [IconButton(onPressed: () {}, icon: const Icon(Icons.add))],
),
body: Center(
child: Column(
children: [
Text(currentNumber.toString()),
Text(anotherNumber.toString()),
],
),
),
);
}
}