生成函数返回null令人讨厌的窗口小部件是:StreamBuilder <response>

时间:2018-09-04 13:50:15

标签: dart flutter reactive-programming

我是Flutter的新手,我正在尝试完成一个简单的事情: 我想使用BLoC模式和流创建注册功能。

对于UI部分,我有一个stepper,在最后一步应该使用收集的数据向服务器发出请求。

我相信直到StreamBuilder之前,我都能正常工作。 StreamBuilders用于返回小部件,但是,对于我而言,我不需要返回任何小部件,如果成功,我想导航到下一个屏幕,否则将在ModalBottomSheet中显示错误。
StreamBuilder抱怨没有小部件返回。

在View端还可以使用其他方法来处理流中的事件吗?

还是有解决这个问题的更好方法?

1 个答案:

答案 0 :(得分:3)

如果不需要渲染任何东西,请不要使用StreamBuilder开始。 StreamBuilder是用于显示Stream内容的帮助小部件。

您想要的与众不同。因此,您可以轻松地手动收听Stream

将执行以下操作:

class Foo<T> extends StatefulWidget {
  Stream<T> stream;

  Foo({this.stream});

  @override
  _FooState createState() => _FooState<T>();
}

class _FooState<T> extends State<Foo<T>> {
  StreamSubscription streamSubscription;

  @override
  void initState() {
    streamSubscription = widget.stream.listen(onNewValue);
    super.initState();
  }

  void onNewValue(T event) {
    Navigator.of(context).pushNamed("my/new/route");
  }


  @override
  void dispose() {
    streamSubscription.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
相关问题