Я делаю небольшой проект с FLUTTER/DART
и RXDART
.
Вот часть кода:
class RegisterBloc with UserValidator {
final _username = BehaviorSubject<String>();
final _email = BehaviorSubject<String>();
final _password = BehaviorSubject<String>();
Function(String) get setUsername => _username.sink.add;
Stream<String> get username => _username.stream.transform(usernameValidatorTransformer);
Function(String) get setEmail => _email.sink.add;
Stream<String> get email => _email.stream.transform(emailValidatorTransformer);
Function(String) get setPassword => _password.sink.add;
Stream<String> get password => _password.stream.transform(passwordValidatorTransformer);
Stream<bool> get validForm => CombineLatestStream.combine3<String, String, String, bool>(_username.stream, _email.stream, _password.stream, (u, e, p) => true);
submit() async {
final form = RegisterForm(
username: _username.value,
email: _email.value,
password: _password.value
);
}
dispose() {
_username.close();
_email.close();
_password.close();
}
}
Проблема в том, что поток validForm выдает пустые данные, и объединитель никогда не вызывается, даже если все потоки уже выдают хотя бы 1 значение.
Что еще хуже, это происходит только на Android (мой v.8.1.0), коды работают так же, как и ожидалось на iOS 11.
Если кому-то интересно, я использую виджет StreamBuilder для обновления данных виджета.
Я что-то здесь упускаю? любая конфигурация должна быть установлена ранее или иначе.
Здесь моя среда разработки:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.2.1, on Mac OS X 10.13.6 17G6030, locale en-ID)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
[✓] Android Studio (version 3.3)
[✓] Connected device (1 available)
RxDart: 0,21,0
Устройство Android: 8.1.0