Dart 阵营应该如何构建?

Dart 阵营应该如何构建?,dart,flutter,structure,bloc,Dart,Flutter,Structure,Bloc,我是新加入阵营的。对于一个简单的屏幕,它应该可以正常工作。但是让我们看看我的案例,我对如何使用Bulc模式感到困惑。 我有一个名为Container的单一屏幕,它是内容的页面视图的容器。假设我在该页面视图中有5个页面。这些页面计数是动态的。这些页面仅与数据不同 我正在考虑两种实现方法: 1/使用一个bloc并将其传递给我的5个孩子Content 2/对容器使用一个bloc,对内容使用另一个bloc。所以这似乎是嵌套的集团。ContainerBloc将包含ContentBloc的列表 第一次进近。

我是新加入阵营的。对于一个简单的屏幕,它应该可以正常工作。但是让我们看看我的案例,我对如何使用Bulc模式感到困惑。

我有一个名为
Container
的单一屏幕,它是
内容的
页面视图的容器。假设我在该
页面视图中有5个页面。这些页面计数是动态的。这些页面仅与数据不同

我正在考虑两种实现方法:

1/使用一个bloc并将其传递给我的5个孩子
Content

2/对
容器使用一个bloc,对
内容使用另一个bloc。所以这似乎是嵌套的集团。
ContainerBloc
将包含
ContentBloc
的列表

第一次进近。我看到的问题是重新渲染问题。我将创建每页的数据列表:

List<List<String>> allData = [];
BehaviorSubject<List<List<String>>> _allData = BehaviorSubject<List<List<String>>>();

Observable<List<String>> getData(index) => _allData.stream.map((list) => list[index]); //This stream returns the list at the index
数据的更新方法如下:

void updateData(int index, List<String> newData) {
    List<String> temp = allData[index];
    temp.add(newData);
    allData[index] = temp;
    _allData.sink.add(allData);
}
void updateData(int索引,列出新数据){
列表温度=所有数据[索引];
临时添加(新数据);
所有数据[索引]=温度;
_allData.sink.add(allData);
}
据我所知,一旦一页被更新。所有其他页面都将重新呈现,因为它们都会侦听
getData(index)
流,该流将由
\u allData.sink.add(allData)触发
因此,我认为所有页面都将重新呈现,即使该页面的数据没有更改

第二种方法。我不知道这样的嵌套集团是否是最佳实践。在某些情况下,
ContainerBloc
必须侦听一些
ContentBloc
输出

我现在有点糊涂了

谢谢您抽出时间。

这会对您有所帮助。构建集团是一个非常全面的话题,你不会找到明确的答案。这应该对你有帮助。构建集团是一个非常全面的话题,你不会找到明确的答案。
void updateData(int index, List<String> newData) {
    List<String> temp = allData[index];
    temp.add(newData);
    allData[index] = temp;
    _allData.sink.add(allData);
}