我正在使用 Flutter(BloC 模式)构建一个流式传输多个摄像头馈送的小部件。当点击一个提要时,它会显示在主提要中(想想谷歌视频群聊,说话的人的脸显示在前面和中间,而其他人的脸在侧面较小)。
当尝试切换选定的提要时,状态 ( int
) 会产生Bloc
's的预期新值MapEventToState
;但是,主CamFeed
小部件不会切换提要。
StatefulWidget
我对返回 a的这种用法的理解BlocBuilder<CamSwitcherBloc, int>
应该在该 int 更改时重建。相反,似乎什么都没有发生。build()
仅在它第一次创建时被调用,并且当其中一个孩子的状态CamFeed
正在更新时。
我已经通过天文台确认,正如预期的那样,只有一个CamSwitcherBloc
.
所以- 我认为是错误的:
当我的 Bloc 中的 MapEventToState 产生一个新值(selectedCam,在下面的构建器中输入)时,build()
应该为我的小部件调用。
如果这是正确的,任何关于在哪里继续我的狩猎的建议将不胜感激。
谢谢!
class CamSwitcher extends StatefulWidget {
@override
_CamSwitcherState createState() => _CamSwitcherState();
}
class _CamSwitcherState extends State<CamSwitcher> {
@override
Widget build(BuildContext context) {
final camSwitcherBloc = BlocProvider.of<CamSwitcherBloc>(context);
return BlocBuilder<CamSwitcherBloc, int>(
builder: (context, selectedCam) => Stack(
children: <Widget>[
Container(
width: 1200,
height: 800,
child: CamFeed(
topic: camSwitcherBloc.cameras[selectedCam],
),
),
Row(
children: <Widget>[
Container(
width: 180,
height: 120,
child: CamFeed(
topic: CamSwitcherBloc.cam1,
focuser: () {
camSwitcherBloc.dispatch(ExpandCamera(0));
},
),
),
Container(
width: 180,
height: 120,
child: CamFeed(
topic: CamSwitcherBloc.cam2,
focuser: () {
camSwitcherBloc.dispatch(ExpandCamera(1));
},
),
),
],
),
],
),
);
}
}