首页 > 解决方案 > 行 mainAxisAlignment 不适用于 FittedBox

问题描述

使用 FittedBox 包装后行 mainAxisAlignment 不起作用请解释为什么会发生这种情况。

Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Container(
          height: 20,
          child: FittedBox(
            fit: BoxFit.fill,
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                Text('THis is the thing'),
                Text('THis is another thing'),
              ],
            ),
          ),
        )
    );
  }

预期的

在此处输入图像描述

输出

在此处输入图像描述

标签: flutterdartflutter-layout

解决方案


如果您真的想在mainAxisAllignment.spaceBetween 或任何效果的Row内部使用,则必须根据间距手动设置 spaceBetween 使用与宽度。还将 fit 属性设置为.FittedBoxSizedBoxBoxFit.fitHeight

Container(
          height: 20,
            child: FittedBox(
              alignment: Alignment.center,
              fit: BoxFit.fitHeight,
              child: Row(
                mainAxisSize: MainAxisSize.min,
                children: [
                  Text('THis is the thing',style: TextStyle(fontSize: 20),),
                  SizedBox(width: 300,),
                  Text('THis is another thing',style: TextStyle(fontSize: 20,),),
                ],
              ),
            ),
        )

注意:设置 allignment 属性以指定定位。对于MainAxisAllignment.startMainAxisAllignment.start。例:生效Alignment.topLeftMainAxisAllignment.start


推荐阅读