dart AlertDialog标题和操作后面的区域行为异常

2sbarzqh  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(78)

在我的应用程序中,我有一个充当过滤器的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元素上。

ie3xauqp

ie3xauqp1#

在ListTile tileColor上呈现有一个常见的行为(CheckboxListTile使用ListTile)您可以 Package 小部件ColoredBox。

ColoredBox(
    color: yourColor,
    child: CheckboxListTile(

相关问题