首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两个不同的块导致“错误状态:流已被监听”。

两个不同的块导致“错误状态:流已被监听”。
EN

Stack Overflow用户
提问于 2019-03-01 13:53:57
回答 1查看 183关注 0票数 0

我是第一次接触flutter。我在同一个Scaffold上有一个登录(和阻止)和注册(和阻止)小部件:

代码语言:javascript
运行
复制
  @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,
                ))));
  }
}

登录阻止:

代码语言:javascript
运行
复制
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();
  }
}

注册区块非常类似于登录区块,不需要发布。

每当我滑动到登录/注册,然后回到注册/登录,它给我一个错误:“糟糕的状态:流已经被监听。”

EN

Stack Overflow用户

发布于 2019-03-01 14:23:41

解决了!我为Login和Register创建了两个独立的文件。它修复了这些问题。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54938698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档