【发布时间】:2021-03-26 11:15:57
【问题描述】:
我整理了一个示例应用程序,该应用程序使用流实现了用户名和密码字段,并使用验证转换进行了验证。我为此使用了 RxDart,并连接了“登录”按钮以根据 2 个流结果为真启用/禁用。
bloc.dart
Stream<bool> get submitValidWithCombineLatestStream =>
CombineLatestStream([email, password], (list) => true);
login_page.dart
Widget submitButton(Bloc bloc) {
return StreamBuilder(
stream: bloc.submitValidWithCombineLatestStream,
builder: (_, snapshot) {
return RaisedButton(
color: Colors.deepPurpleAccent,
child: Text(
'Submit',
style: TextStyle(color: Colors.white),
),
onPressed: !snapshot.hasData ? null : bloc.submit,
);
},
);
}
我已经使用 flutter_bloc 编写了相同的示例应用程序,但我试图弄清楚如何使用组合最新流的任何 bloc 启用/禁用“登录”按钮。有人知道怎么做吗?
我意识到这完全是矫枉过正,但我正在尝试使用这个简单的示例来解决这个问题,我不确定一旦转换为 bloc (flutter_bloc) 后如何访问所有很酷的 RxDart 功能。我希望在不导入/使用 RxDart 的情况下两全其美。
这可能吗?
我正在寻找的一个例子是:
- 我正在构建一个需要 3 个不同后端调用的表单。我宁愿在所有 3 个调用都在工作时显示进度指示器,并阻止直到所有 3 个调用返回。我想通过 CombineLatestStreams 做到这一点,因为所有 3 个都返回 Steam Futures。
【问题讨论】:
标签: flutter bloc flutter-bloc rxdart