UI 收到集团信息时没有完全更新
UI doesn't fully update when receive bloc informations
我有一个奇怪的问题:我想在单击时更新项目网格。我使用 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,
);
}),
所以,我有两个项目。当我点击第一个时,我想会有一个名称和图片不同的项目。但是当我单击时,我得到了预期的一项,但具有相同的文本和图像。当我打印这些值时,它已正确更新,但视图未显示它。
你有我的问题的线索吗?
由于我无法解释的原因,当我替换
staggeredTile.clear();
cards.clear();
来自
staggeredTile = new List<StaggeredTile>();
cards = new List<Widget>();
它工作正常。
如果有人能告诉我原因,我将不胜感激。
我有一个奇怪的问题:我想在单击时更新项目网格。我使用 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,
);
}),
所以,我有两个项目。当我点击第一个时,我想会有一个名称和图片不同的项目。但是当我单击时,我得到了预期的一项,但具有相同的文本和图像。当我打印这些值时,它已正确更新,但视图未显示它。
你有我的问题的线索吗?
由于我无法解释的原因,当我替换
staggeredTile.clear();
cards.clear();
来自
staggeredTile = new List<StaggeredTile>();
cards = new List<Widget>();
它工作正常。
如果有人能告诉我原因,我将不胜感激。