0

この奇妙な問題があります。クリックしたときに項目のグリッドを更新したいのです。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 つの項目が表示されますが、テキストと画像は同じです。これらの値を印刷すると、正しく更新されますが、ビューには表示されません。

私の問題の手がかりはありますか?

4

1 に答える 1