Flutter,用布尔值将图标状态从一个小部件更改为另一个小部件



我有两个小部件。首先是在GridView.builder() - ParticipantCard()中显示第二个小部件的ParticipantScreen()。这两个小工具都有麦克风图标,可以让参与者静音。当我静音本地参与者时,我单击ParticipantScreen()上的麦克风图标,并且考虑到我想在ParticipantCard()中更改麦克风图标状态也为相同的布尔值,但仅用于列表中的第一项,用于创建GridView与ParticipantCards。是否可以将布尔值从一个小部件传递到另一个小部件?

你可以使用回调函数(可以是typedef)来实现这个

final Function(bool isMuted) onChanged;

使用这个小部件

class ParentWidget extends StatefulWidget {
const ParentWidget({Key? key}) : super(key: key);
@override
State<ParentWidget> createState() => _ParentWidgetState();
}
class _ParentWidgetState extends State<ParentWidget> {
bool _isMuted = false;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Switch(
value: _isMuted,
onChanged: (v) {
setState(() {
_isMuted = !_isMuted;
});
}),
ChildC(
isMuted: _isMuted,
onChanged: (isMuted) {
setState(() {
_isMuted = isMuted;
});
},
),
],
),
);
}
}
class ChildC extends StatefulWidget {
final bool isMuted;
final Function(bool isMuted) onChanged;
const ChildC({
Key? key,
required this.isMuted,
required this.onChanged,
}) : super(key: key);
@override
State<ChildC> createState() => _ChildCState();
}
class _ChildCState extends State<ChildC> {
@override
Widget build(BuildContext context) {
return Switch(
value: widget.isMuted,
onChanged: (v) {
widget.onChanged(v);
});
}
}

最新更新