flutter MainAxisSize.min在自定义对话框中不工作

guicsvcw  于 2023-10-22  发布在  Flutter
关注(0)|答案(2)|浏览(145)

编辑

使用我尝试过的方法,以及我得到的答案,我无法实现自动调整大小的效果,并且总是让对话框处于最高位置,所以我从使用Scaffold切换到Containers。如果有一个检查的方式来做Scaffold随时张贴。谢谢.

提问

我尝试在ScaffoldColumn小部件中使用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

zbq4xfa0

zbq4xfa01#

Column Package Scaffold并设置mainAxisSize: MainAxisSize.min

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

iugsix8n2#

@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]
         
                ),

我希望这会有帮助!

相关问题