我想在其父级内对齐 Flutter 小部件。我知道我可以通过将一个小部件包装在一个中心小部件中来居中它。
Center(
child: Text("widget"),
)
但是如何将其对齐到右侧、底部、顶部中间等?
注意事项:
我说的是单个 child ,而不是行或列中的多个 child 。请参阅这些 SO 问题:
这个问题是正确的,但我想提出一个更规范的问题:
最佳答案
要在其父窗口中对齐子窗口小部件,请使用 Align
小部件。如果您知道如何使用 Center
小部件,那么您就是正确的轨道,因为 Center
只是 Align
的一个特例。
用 Align 小部件包装您希望对齐的小部件并设置其对齐属性。例如,这会将文本小部件与父小部件的右中对齐。
Align(
alignment: Alignment.centerRight,
child: Text("widget"),
)
其他选项是
Alignment.topLeft
Alignment.topCenter
Alignment.topRight
Alignment.centerLeft
Alignment.center
Alignment.centerRight
Alignment.bottomLeft
Alignment.bottomCenter
Alignment.bottomRight
看起来是这样的:
您不仅限于这些位置。您可以在任何地方对齐小部件。通过指定 x,y 对,其中 (0,0)
是 View 的中心,边缘是围绕它的 1.0
单位。也许一张图片会有所帮助:
任何相对位置的位置 (x,y)
Alignment.topLeft
是 Alignment(-1.0, -1.0)
Alignment.topCenter
是 Alignment(0.0, -1.0)
Alignment.topRight
是 Alignment(1.0, -1.0)
Alignment.centerLeft
是 Alignment(-1.0, 0.0)
Alignment.center
是 Alignment(0.0, 0.0)
Alignment.centerRight
是 Alignment(1.0, 0.0)
Alignment.bottomLeft
是 Alignment(-1.0, 1.0)
Alignment.bottomCenter
是 Alignment(0.0, 1.0)
Alignment.bottomRight
是 Alignment(1.0, 1.0)
注意图像中的对齐方式 (x,y)
不需要在 [-1, +1]
范围内。对齐 (1,2)
意味着它位于小部件的右侧,并且在小部件的下方再次与其高度一样多。
这是自定义对齐位置的示例。
Align(
alignment: Alignment(0.7, -0.5),
child: Text("widget"),
)
这是用于制作上述示例的 main.dart
代码,方便您进行剪切和粘贴。
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(),
body: myLayoutWidget(),
),
);
}
}
Widget myLayoutWidget() {
return Align(
alignment: Alignment(0.7, -0.5),
child: Text(
"widget",
style: TextStyle(fontSize: 30),
),
);
}
https://stackoverflow.com/questions/53716571/