类型 'BehaviorSubject<dynamic>' 不是 'stream' 的类型 'Stream<String>' 的子类型

type 'BehaviorSubject<dynamic>' is not a subtype of type 'Stream<String>' of 'stream'

我遇到了这个奇怪的错误,我似乎无法解决这个问题。我在我的登录页面中实现了 bloc 模式。我似乎无法指出我做错了什么。这是我的代码

login_bloc.dart

import 'package:rxdart/rxdart.dart';
import 'dart:async';

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

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

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

  Stream<bool> get submitCheck => Rx.combineLatest2(emailValidator, passwordValidator, (e, p) => true);

  dispose() {
   _emailController?.close();
   _passwordController?.close();
 }
}

mixin Validators {
  var emailValidators =
  StreamTransformer<String, String>.fromHandlers(handleData: (email, sink) {
   if (email.contains("@")) {
     sink.add(email);
   } else {
     sink.addError("Email is not valid");
   }
});

  var passwordValidators = StreamTransformer<String, String>.fromHandlers(
     handleData: (password, sink) {
    if (password.length > 0) {
      sink.add(password);
    } else {
      sink.addError("Password Field should not be empty");
    }
 });
}

final loginBloc = LoginBloc();

这是我创建的调用 bloc

的小部件
  Widget _emailPasswordWidget() {
return Column(
  children: <Widget>[
    Container(
  margin: EdgeInsets.symmetric(vertical: 10),
  child: Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: <Widget>[
      Text(
        'Email ID',
        style: TextStyle(fontWeight: FontWeight.bold, fontSize: 15),
      ),
      SizedBox(
        height: 10,
      ),
      StreamBuilder<String>(
        stream: loginBloc.emailValidator,
        builder: (context, snapshot) {
          return TextField(
              onChanged: loginBloc.emailChanged,
              obscureText: false,
              decoration: InputDecoration(
                  errorText: snapshot.error,
                  border: InputBorder.none,
                  fillColor: Color(0xfff3f3f4),
                  filled: true));
        }
      )
    ],
  ),
)
   loginBloc.passwordChanged),
  ],
);
}

如有任何帮助,我将不胜感激。我已经在线检查过,但没有看到任何帮助。我正在使用 rxdart 版本 ^0.23.1。我使用了 streamcontroller 而不是行为主题,我也使用了 publishsubject,但我仍然收到错误。

BehaviorSubject 不需要是 dynamic 类型,因为所有经过的都是字符串,所以最好的解决方法是像这样输入它:

BehaviorSubject<String>()