gpt4 book ai didi

dart - 列中 RaisedButton 小部件之间出现不需要的空间

转载 作者:IT王子 更新时间:2023-10-29 06:59:23 26 4
gpt4 key购买 nike

tl;dr 当我没有明确设置任何按钮时,为什么两个按钮之间会出现空格?

我正在尝试制作如下所示的布局:

Image depicting a basic mobile login page consisting of a centered column containing a logo and two vertically-stacked buttons underneath for login and registration. There is some space between the logo and the buttons but no space between the buttons

但是,两个按钮之间出现了大约 16px 的空间,我不知道它是从哪里来的。

我起初以为 Column 可能会增加空间,但我使用的是 MainAxisAlignment.center,它不应该增加任何空间。我现在认为可能有一些 Material 主题正在自动将填充应用于 RaisedButton,但是我已经查看了 button_theme.dartraised_button.dart似乎只设置了内部填充(文本和按钮边缘之间)。我确信我忽略了一些东西,如果能帮助我找出这个空间存在的原因,我将不胜感激。

auth.dart(图中显示的屏幕)

...
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(flex: 2, child: Container()),
Expanded(
flex: 8,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Padding(
padding: EdgeInsets.fromLTRB(0, 0, 0, 32),
child: Image(
fit: BoxFit.contain,
image: AssetImage('lib/res/drawable/logo.webp'))),
PrimaryButton(
onPressed: //...,
child: Text('Log In')),
PrimaryButton(
onPressed: //...,
child: Text('Sign Up')),
])),
Expanded(flex: 2, child: Container()),
]));
}

primary_button.dart(扩展 RaisedButton 的自定义圆形按钮小部件):

...
Widget build(BuildContext context) {
return Theme(
data: Theme.of(context).copyWith(
textTheme: Theme.of(context).textTheme,
buttonTheme: Theme.of(context).buttonTheme.copyWith(
padding: EdgeInsets.all(0),
minWidth: double.infinity,
buttonColor: Theme.of(context).accentColor,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(24))),
),
child: Builder(builder: super.build));
}

最佳答案

添加属性 materialTapTargetSize 并将其设置为 MaterialTapTargetSize.shrinkWrap

materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,

如果您检查 RawMaterialButton 的源代码,它会根据该值添加一个填充:

    Size minSize;
switch (widget.materialTapTargetSize) {
case MaterialTapTargetSize.padded:
minSize = const Size(48.0, 48.0);
break;
case MaterialTapTargetSize.shrinkWrap:
minSize = Size.zero;
break;
}

return Semantics(
container: true,
button: true,
enabled: widget.enabled,
child: _InputPadding(
minSize: minSize,
child: result,
),
);

关于dart - 列中 RaisedButton 小部件之间出现不需要的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53714646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com