我有ToggleButtons
如下:Map<String, bool> listButton = {'low': true, 'medium': true, 'high': true};
我创建了myColor
类,如下所示:var myColor = {"low": Colors.green, "medium": Colors.amberAccent, "high": Colors.red};
因此,如何通过属性ToggleButtons
显示fillColor
的颜色遵循myColor
中的颜色,如下所示:
所以请帮助我,这是主文件:
import 'package:flutter/material.dart';
class ToggleButtonColor extends StatefulWidget {
@override
_ToggleButtonColorState createState() => _ToggleButtonColorState();
}
class _ToggleButtonColorState extends State<ToggleButtonColor> {
Map<String, bool> listButton = {'low': true, 'medium': true, 'high': true};
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Toggle Button Color')),
body: ToggleButtons(
children: listButton.keys.map((e) => Text(e)).toList(),
fillColor: myColor[listButton.keys], // I think this line needs to be corrected
isSelected: listButton.values.toList(),
onPressed: (int index) {
String indexKey = listButton.keys.toList()[index];
setState(() {
listButton.update(indexKey, (value) => !value);
});
}));
}
}
var myColor = {"low": Colors.green, "medium": Colors.amberAccent, "high": Colors.red};
最佳答案
您可以通过不在公共(public)属性fillColor
中的每个 child 来做到这一点
一个例子:
class ToggleButtonColor extends StatefulWidget {
@override
_ToggleButtonColorState createState() => _ToggleButtonColorState();
}
class _ToggleButtonColorState extends State<ToggleButtonColor> {
Map<String, bool> listButton = {'low': true, 'medium': true, 'high': true};
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Toggle Button Color')),
body: ToggleButtons(
children: listButton.keys.map((e) => Container(color: myColor[e], child: Text(e))).toList(),
//Not here fillColor: myColor[listButton.keys], // I think this line needs to be corrected
isSelected: listButton.values.toList(),
onPressed: (int index) {
String indexKey = listButton.keys.toList()[index];
setState(() {
listButton.update(indexKey, (value) => !value);
});
}));
}
}
var myColor = {"low": Colors.green, "medium": Colors.amberAccent, "high": Colors.red};
根据需要正确放置尺寸关于flutter - Flutter:如何为ToggleButtons的每个按钮着色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63131478/