The document discusses different state management approaches in Flutter including Provider, BLoC, and Redux. It provides code examples for implementing user authentication and login using the Provider and BLoC patterns. Additional resources are referenced at the end for learning more about Redux principles and the Provider package in Flutter.
8. Poznan Flutter Developer Group
class UserSignInBloc {
Sink<UserLogin> get login => _userCredentialsStream.sink;
final _userCredentialsStream = BehaviorSubject<UserLogin>();
Stream<UserAuthenticationState> userSigned;
UserSignInBloc() {
userSigned = Observable.merge([
_userCredentialsStream.stream.switchMap(_signIn),
// other login methods go here
]).asBroadcastStream();
}
void dispose() {
_userCredentialsStream.close();
}
// Business logic here
}
_userSignInBloc.login.add(UserLogin(user, password));
9. Poznan Flutter Developer Group
var _userSignInBloc = UserSignInBloc();
ResultWidget(_userSignInBloc.userSigned),
class ResultWidget extends StatefulWidget {
Stream<UserAuthenticationState> userSigned;
ResultWidget(this.userSigned);
@override
_ResultWidgetState createState() => _ResultWidgetState(userSigned);
}
class _ResultWidgetState extends State<ResultWidget> {
var loginResultText = "";
_ResultWidgetState(Stream<UserAuthenticationState> userSigned){
userSigned.listen(onLoginDataChanged);
}
void onLoginDataChanged(UserAuthenticationState event) {
if (event is UserAuthenticationLoading) {
setState(() {
loginResultText = "LOADING...";
});
}
}