Два разных блока вызывают «Плохое состояние: поток уже прослушан». - PullRequest
0 голосов
/ 01 марта 2019

Я новичок, чтобы трепетать.У меня есть виджет входа (и блока) и регистрации (и блока) на одном и том же платформе:

  @override
  Widget build(BuildContext context) {
    _init(context);
    return Scaffold(
        resizeToAvoidBottomPadding: false,
        body: SingleChildScrollView(
            child: new Container(
                height: MediaQuery.of(context).size.height,
                width: MediaQuery.of(context).size.width,
                child: PageView(
                  controller: _controller,
                  physics: new AlwaysScrollableScrollPhysics(),
                  children: <Widget>[LoginPage(), HomePage(), SignupPage()],
                  scrollDirection: Axis.horizontal,
                ))));
  }
}

Блок входа в систему:

class LoginBloc extends Validators {
  //service
  final AppStoreApplication _application;

  final BehaviorSubject<String> _email = BehaviorSubject<String>();
  final BehaviorSubject<String> _password = BehaviorSubject<String>();
  CompositeSubscription _compositeSubscription = CompositeSubscription();
  final BehaviorSubject<bool> _isShowLoading = BehaviorSubject<bool>();

  LoginBloc(this._application);

  //Add data to streams login-form
  Stream<String> get email => _email.stream.transform(validateEmail);
  Stream<String> get password => _password.stream.transform(validatePassword);
  Stream<bool> get isShowLoading => _isShowLoading.stream;
  Stream<bool> get submitValid =>
      Observable.combineLatest2(email, password, (e, p) => true);



  // Change data form-login
  Function(String) get changeEmail => _email.sink.add;
  Function(String) get changePassword => _password.sink.add;

  submit() async {
     AuthenticationBloc bloc;
    //_isShowLoading.add(true);
    final email = _email.value;
    final password = _password.value;
    _application.appStoreAPIRepository
        .login(email, password)
        .listen((User user) {
      Preferences.setToken(user.token);

      bloc.emitEvent(AuthenticationEventLogin(name: user.displayname));
      //_isShowLoading.add(false);
    });

    //_compositeSubscription.add(subscription);
  }

  void dispose() {
    _compositeSubscription?.clear();
    _isShowLoading?.close();
    _email?.close();
    _password?.close();
  }
}

Блок регистрации очень похож на Блок входаБлок и не нужно публиковать.

Всякий раз, когда я провожу до входа / регистрации и затем снова до регистрации / входа, я получаю сообщение об ошибке: «Плохое состояние: поток уже прослушан».

1 Ответ

0 голосов
/ 01 марта 2019

Решено!Я создал два отдельных файла для входа и регистрации.Это исправило проблемы.

...