我的集团中有一些流。我不确定这是否是正确和正确的方法,因为我是 Flutter 和 Bloc 模式的新手。但是如何将 Bloc 中的流合并为一个呢?
欢迎任何关于该主题的提示......
我的集团文件
import 'package:flutter/material.dart';
import 'package:rxdart/rxdart.dart';
class WelcomeBloc {
final _controller = PublishSubject<PageController>();
final _page = PublishSubject<int>();
final _lastPage = PublishSubject<bool>();
Stream<dynamic> get combinedStream =>
CombineLatestStream.list([getController, currentPage, isLastPage]);
Stream<PageController> get getController => _controller.stream;
Stream<int> get currentPage => _page.stream;
Stream<bool> get isLastPage => _lastPage.stream;
updatePage(int page) {
_page.sink.add(page);
}
updatePageState(bool state) {
_lastPage.sink.add(state);
}
dispose() {
_controller.close();
_page.close();
_lastPage.close();
}
}
final welcomeBloc = WelcomeBloc();
消费者
import 'package:flutter/material.dart';
import '../../blocs/welcome_bloc.dart';
import './pages/page.dart';
import './pages/page2.dart';
import './pages/login.dart';
class ViewerWrapper extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: welcomeBloc.combinedStream,
builder: (context, AsyncSnapshot snapshot) {
return PageView(
children: <Widget>[
Page1(),
Page2(),
Login(),
],
onPageChanged: (page) {
welcomeBloc.updatePage(page);
print(snapshot.data._page);
// welcomeBloc.updatePage(page + 1);
},
// controller: snapshot.data.getController,
);
});
}
}