この奇妙な問題があります。クリックしたときに項目のグリッドを更新したいのです。BLoC パターンを使用して変更を管理するので、ビューはリストを受け取って表示するだけです。私の問題は、ビューが完全に更新されないことです。
説明を進める前に、ここに私のコードを示します
body: BlocEventStateBuilder<ShopEvent, ShopState>(
bloc: bloc,
builder: (BuildContext context, ShopState state) {
staggeredTile.clear();
cards.clear();
staggeredTile.add(StaggeredTile.count(4, 0.1));
cards.add(Container());
if (state.products != null) {
state.products.forEach((item) {
staggeredTile.add(StaggeredTile.count(2, 2));
cards.add(
Card(
child: InkWell(
child: Column(
children: <Widget>[
Image.network(
item.picture,
height: 140,
),
Container(margin: EdgeInsets.only(top: 8.0)),
Text(item.title)
],
),
onTap: () {
bloc.emitEvent(ClickShopEvent(item.id));
},
),
),
);
});
}
return StaggeredGridView.count(
crossAxisCount: 4,
staggeredTiles: staggeredTile,
children: cards,
);
}),
というわけで、2品あります。最初のアイテムをクリックすると、名前と画像が異なるアイテムが 1 つ表示されるはずです。しかし、クリックすると、予想どおり 1 つの項目が表示されますが、テキストと画像は同じです。これらの値を印刷すると、正しく更新されますが、ビューには表示されません。
私の問題の手がかりはありますか?