MainAxisSize.min 在自定义对话框中不起作用

问题描述 投票:0回答:2

我正在尝试使用我的脚手架列小部件中的 MainAxisSize.min 让对话框自动调整大小以适应其所有内容,但我仍然得到该小部件的完整长度。为什么 MainAxisSize.min 在这里不起作用?

这是对话框的代码:

class AddSockPopup extends Dialog {
  const AddSockPopup({super.key});

  @override
  Widget build(BuildContext context) {
    return StatefulBuilder(
      builder: (context, StateSetter setState){
        return Dialog(
          elevation: 0,
          backgroundColor: Colors.transparent,
          child: _buildChild(context, setState),
        );
      },
    );
  }

  _buildChild(BuildContext context, StateSetter setState) {
    return ClipRRect(
      borderRadius: BorderRadius.all(Radius.circular(12)),
      child: Scaffold(
        backgroundColor: Colors.grey[300],
        appBar: AppBar(
          title: Text('Sock details'),
          centerTitle: true,
          backgroundColor: Colors.purple[400],
          automaticallyImplyLeading: false,
        ),
        body: Padding(
          padding: EdgeInsets.all(20.0),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [...],
          ),
        ),
      ),
    );
  }
}

This is what I get

flutter autosize customdialog
2个回答
0
投票

Scaffold
包裹您的
Column
并设置
mainAxisSize: MainAxisSize.min

return ClipRRect(
  borderRadius: BorderRadius.all(Radius.circular(12)),
  child: Column(
    mainAxisSize: MainAxisSize.min,
    children: [
      Scaffold(
        // ...
      ),
    ],
  ),
);

0
投票

@Babushka 使用

ConstrainedBox
小部件可以动态调整对话框的高度。它会根据您的内容自动调整。

ConstrainedBox(
                 
                  constraints: BoxConstraints(
                    minWidth: MediaQuery.of(context).size.width * 0.80,
                    maxWidth: MediaQuery.of(context).size.width * 0.80,
                    minHeight: MediaQuery.of(context).size.height * 0.30,
                  ),

                  child: [Your widget]
         
                ),

我希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.