在我的应用程序中,我有一个充当过滤器的AlertDialog,问题是它在标题后面有一个区域,在动作后面有一个区域,在那里显示瓷砖,但它们的文本被隐藏,我不知道如何进一步解释,所以这里是照片:
这是我的代码:
class _FilterDialogState extends State<FilterDialog> {
late List<String> _selectedItems;
@override
void initState() {
super.initState();
_selectedItems = List.from(widget.selectedItems);
}
@override
Widget build(BuildContext context) {
return AlertDialog(
title: Text(
'Materie',
style: TextStyle(
fontWeight: FontWeight.bold,
fontStyle: FontStyle.normal,
),
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.0),
),
backgroundColor: widget.backgroundColor ?? Colors.white,
content: SingleChildScrollView(
child: Column(
children: widget.items.map((item) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 3.0),
child: CheckboxListTile(
title: Text(
item,
style: TextStyle(
fontSize: 11,
fontWeight: FontWeight.normal,
color: _selectedItems.contains(item)
? widget.activeColor ?? Colors.red
: widget.notActiveColor ?? Colors.black,
),
),
visualDensity: VisualDensity.compact,
tileColor: widget.tileBackgroundColor,
dense: true,
contentPadding: EdgeInsets.fromLTRB(12, 0, 0, 0),
activeColor: widget.activeColor ?? Colors.blue,
checkboxShape: CircleBorder(
side: BorderSide(
width: 0.5,
color: widget.notActiveColor ?? Colors.black,
),
),
value: _selectedItems.contains(item),
onChanged: (value) {
setState(() {
if (value != null && value) {
_selectedItems.add(item);
} else {
_selectedItems.remove(item);
}
});
},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(500.0),
),
),
);
}).toList(),
),
),
actions: <Widget>[
TextButton(
child: Text(
'Cancel',
style: TextStyle(color: widget.buttonColor ?? Colors.red),
),
onPressed: () {
Navigator.of(context).pop();
},
),
ElevatedButton(
child: Text('Apply'),
onPressed: () {
widget.onApply(_selectedItems);
Navigator.of(context).pop();
},
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(200.0)),
backgroundColor: widget.buttonColor ?? Colors.red),
),
],
);
}
}
我甚至找不到问题的根源,我试着把所有孩子的所有paddings都设置为0,但没有任何效果。
已解决:
我不得不把singleChildScrollView
的属性:clipBehavior: Clip.none,
,但随后tiles退出了alert对话框,因此我不得不将clipBehavior: Clip.hardEdge,
放在AlertDialog
元素上。
1条答案
按热度按时间ie3xauqp1#
在ListTile
tileColor
上呈现有一个常见的行为(CheckboxListTile使用ListTile
)您可以 Package 小部件ColoredBox。