小编Ali*_*min的帖子

Flutter BLoC:使用嵌套 StreamBuilder 是一种不好的做法吗?

是否有更好的方法将小部件公开给来自不同 BLoC 的两个或多个流?到目前为止,我一直在使用nested 来StreamBuilder监听尽可能多的流,就像下面粘贴的代码一样。这是一个好的做法吗?

StreamBuilder(
    stream: firstBloc.stream1,
    builder: (_, AsyncSnapshot snapshot1) {
        return StreamBuilder(
            stream: secondBloc.stream2,
            builder: (_, AsyncSnapshot snapshot2) {
                return CustomWidget(snapshot1.data, snapshot2.data);
            }
        )
    }
)

Run Code Online (Sandbox Code Playgroud)

使用rxdart像这样的运算符combineLatest2感觉很笨重,因为大多数时候我不希望一个块被用来了解另一个块中的流。

architecture flutter bloc

5
推荐指数
1
解决办法
1601
查看次数

Flutter-MultiProvider如何与相同类型的提供者一起工作?

例如,我试图一次获取多个流发出的数据,但是其中两个或多个流发出相同类型的数据,比如说一个字符串。

我的问题是,是否可以使用MultiProvider和使用StreamProvider相同类型的多个(或任何提供程序,但我对这种情况感兴趣),同时仍然能够访问其中每个发出的数据?

一种解决方案是StreamBuilder在使用通用数据类型时使用,但是我真的很喜欢这些MultiProvider提供更简洁代码的工具。

例:

class MyScreen extends StatelessWidget {
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        StreamProvider<String>(stream: Observable.just("stream1")),
        StreamProvider<String>(stream: Observable.just("stream2")),
        StreamProvider<String>(stream: Observable.just("stream3"))
      ],
      child: Builder(
        builder: (BuildContext context) {
          AsyncSnapshot<String> snapshot =
              Provider.of<AsyncSnapshot<String>>(context);
          String data = snapshot.data;
          return Text(data); 
        },
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

architecture dart flutter

2
推荐指数
1
解决办法
2623
查看次数

标签 统计

architecture ×2

flutter ×2

bloc ×1

dart ×1