У меня в блоке несколько стримов. Я не уверен, что это правильный и правильный подход, потому что я новичок в шаблоне Flutter и 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,
);
});
}
}