我是 Flutter 的新手,我正在尝试几天来弄清楚如何让流构建器的构建小部件子项对小部件的外观进行一些更改。
我有一些这样的小部件,已经构建并保存到列表中:
GestureDetector(
child: StreamBuilder(
stream: (bloc as HomeBloc).outCategoriesCardsColors,
builder: (context, snapshot) {
if (snapshot.hasData) {
return CardSmallSquare(
title: key,
size: CardSmallSquare.defaultCardSize,
iconUrl: categories[key],
borderColor: snapshot.data[index + 1] ?? Colors.red,
);
} else {
return CardSmallSquare.buildLoadingCard(context);
}
}),
onTap: () {},
));
稍后,我尝试使用这些小部件访问我的列表,并访问由 StreamBuilder 返回的 CardSmallSquare((,这样我就可以在运行时更改一些外观属性。这个想法是做这样的事情(这个片段不起作用(:
int index = _widgets.indexWhere((widget) {
CardSmallSquare card = (((widget as GestureDetector).child as StreamBuilder).child as CardSmallSquare);
if (card.title == "Title") {
return true;
}
return false;
});
StreamBuilder.child 不存在。到目前为止,我已经尝试了很多东西(方法,技巧等(,但没有一个奏效。
你能帮帮我吗?
你可以接触到StreamBuilder的子级,但这是在与框架作斗争,而不是使用它。
您可以通过改变小部件的状态并在流构建器的子项中对此更改做出反应来轻松创建此逻辑。
此外,您可以在集团内执行此操作以保持一切清洁。
谷歌IO的这个演讲可以帮上很多忙 https://youtu.be/d_m5csmrf7I