构建函数返回null违规小部件是:StreamBuilder

问题描述 投票:1回答:1

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

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

我相信在StreamBuilder部分之前我已经完成了所有工作。 StreamBuilders用于返回Widgets,但是,在我的情况下,我不需要返回任何小部件,如果它成功,我想导航到下一个屏幕,否则将在ModalBottomSheet中显示错误。 StreamBuilder抱怨没有返回任何小部件。

还有什么可以在View端使用来处理来自流的事件吗?

或者有更好的解决方法吗?

dart flutter reactive-programming
1个回答
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();
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.