(BLo C) Snapshot.hasData всегда возвращает false - PullRequest
0 голосов
/ 21 апреля 2020

Я впервые использую BLoC в своем приложении.

Я следовал руководству, найденному в github, и скопировал его коды. Но в моем случае мой snapshot.hasData всегда возвращает false.

BLo C код:

class LoginBloc extends Object with Validators implements BaseBloc {
  final _emailController = BehaviorSubject<String>();
  final _passwordController = BehaviorSubject<String>();

  Function(String) get emailChanged => _emailController.sink.add;
  Function(String) get passwordChanged => _passwordController.sink.add;

  Stream<String> get email => _emailController.stream.transform(emailValidator);
  Stream<String> get password =>
      _passwordController.stream.transform(passwordValidator);

  Stream<bool> get loginCheck =>
      Rx.combineLatest2(email, password, (e, p) => true);

  submit() {
    print("xyx");
  }

  @override
  void dispose() {
    _emailController?.close();
    _passwordController?.close();
  }
}

abstract class BaseBloc {
  void dispose();
}

Страница входа:

StreamBuilder<Object>(
                      stream: loginBloc.loginCheck,
                      builder: (context, snapshot) {
                        return GestureDetector(
                          onTap: () {
                            updateForm(0, snapshot.hasData);
                          },
                          child: Text(
                            "Login",
                            textAlign: TextAlign.center,
                            style: TextStyle(
                                fontSize: fontSizeSmall,
                                color: _status == 0
                                    ? Colors.white
                                    : Color(colorDisabled)),
                          ),
                        );
                      }),

updateForm Метод:

 updateForm(int status, bool hasData) {
    print(hasData);
    if (status == 1) {
      setState(() {
        title = "REGISTER";
        _status = 1;
        buttonAlignment = Alignment.centerRight;
      });
    } else if (status == 1 && hasData) {
      Navigator.of(context)
          .push(MaterialPageRoute(builder: (context) => HomeScreen()));
    } else if (status == 0 && hasData) {
      Navigator.of(context)
          .push(MaterialPageRoute(builder: (context) => HomeScreen()));
    } else {
      setState(() {
        title = "LOGIN";
        _status = 0;
        buttonAlignment = Alignment.centerLeft;
      });
    }
  }

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...