in packages/diagrams/lib/src/toggle_buttons.dart [47:151]
Widget build(BuildContext context) {
Widget returnWidget;
switch (widget.name) {
case _toggleButtonsSimple:
returnWidget = ToggleButtons(
children: <Widget>[
Icon(Icons.ac_unit, key: _iconKeys[0]),
Icon(Icons.call, key: _iconKeys[1]),
Icon(Icons.cake, key: _iconKeys[2]),
],
onPressed: (int index) {
setState(() {
isSelected[index] = !isSelected[index];
});
},
isSelected: isSelected,
);
break;
case _toggleButtonsRequired:
returnWidget = ToggleButtons(
children: <Widget>[
Icon(Icons.ac_unit, key: _iconKeys[0]),
Icon(Icons.call, key: _iconKeys[1]),
Icon(Icons.cake, key: _iconKeys[2]),
],
onPressed: (int index) {
int count = 0;
for (int index = 0; index < isSelected.length; index++) {
if (isSelected[index]) {
count += 1;
}
}
if (isSelected[index] && count < 2) {
return;
}
setState(() {
isSelected[index] = !isSelected[index];
});
},
isSelected: isSelected,
);
break;
case _toggleButtonsMutuallyExclusive:
returnWidget = ToggleButtons(
children: <Widget>[
Icon(Icons.ac_unit, key: _iconKeys[0]),
Icon(Icons.call, key: _iconKeys[1]),
Icon(Icons.cake, key: _iconKeys[2]),
],
onPressed: (int index) {
setState(() {
for (int buttonIndex = 0;
buttonIndex < isSelected.length;
buttonIndex++) {
if (buttonIndex == index) {
isSelected[buttonIndex] = !isSelected[buttonIndex];
} else {
isSelected[buttonIndex] = false;
}
}
});
},
isSelected: isSelected,
);
break;
case _toggleButtonsRequiredMutuallyExclusive:
returnWidget = ToggleButtons(
children: <Widget>[
Icon(Icons.ac_unit, key: _iconKeys[0]),
Icon(Icons.call, key: _iconKeys[1]),
Icon(Icons.cake, key: _iconKeys[2]),
],
onPressed: (int index) {
setState(() {
for (int buttonIndex = 0;
buttonIndex < isSelected.length;
buttonIndex++) {
if (buttonIndex == index) {
isSelected[buttonIndex] = true;
} else {
isSelected[buttonIndex] = false;
}
}
});
},
isSelected: isSelected,
);
break;
default:
returnWidget = const Text('Error');
break;
}
return ConstrainedBox(
key: UniqueKey(),
constraints: BoxConstraints.tight(const Size(400, 100)),
child: Container(
alignment: FractionalOffset.center,
padding: const EdgeInsets.all(5.0),
color: Colors.white,
child: returnWidget,
),
);
}