如何在 Flutter 中对齐单个小部件?

我想对齐一个扑动小部件在其父级。我知道我可以通过将一个小部件包装在一个 Center 小部件中来使其居中。

  Center(
child: Text("widget"),
)

但是如何将它对齐到右边、底部、上中部等?

备注:

我说的是一个孩子,而不是一行或一列中的多个孩子:

这个问题的思路是正确的,但我试图提出一个更为严肃的问题:

110433 次浏览

How to align widgets

To align a child widget within its parent you use the Align widget. If you know how to use the Center widget then you are the right track because Center is just a special case of Align.

Wrap the widget you wish to align with the Align widget and set its alignment property. For example, this would align a text widget to the middle right of the parent.

Align(
alignment: Alignment.centerRight,
child: Text("widget"),
)

Other options are

  • Alignment.topLeft
  • Alignment.topCenter
  • Alignment.topRight
  • Alignment.centerLeft
  • Alignment.center
  • Alignment.centerRight
  • Alignment.bottomLeft
  • Alignment.bottomCenter
  • Alignment.bottomRight

Here is what that looks like:

enter image description here

You are not limited to these locations. You can align your widget anywhere. by specifying an x,y pair, where (0,0) is the center of the view and the edges are 1.0 unit around it. Maybe an image would help:

alignment

where for any relative position (x,y)

  • Alignment.topLeft is Alignment(-1.0, -1.0)
  • Alignment.topCenter is Alignment(0.0, -1.0)
  • Alignment.topRight is Alignment(1.0, -1.0)
  • Alignment.centerLeft is Alignment(-1.0, 0.0)
  • Alignment.center is Alignment(0.0, 0.0)
  • Alignment.centerRight is Alignment(1.0, 0.0)
  • Alignment.bottomLeft is Alignment(-1.0, 1.0)
  • Alignment.bottomCenter is Alignment(0.0, 1.0)
  • Alignment.bottomRight is Alignment(1.0, 1.0)

Notice in the image that the alignment (x,y) doesn't need to be within the range [-1, +1]. The alignment (1,2) means it is at the right side of the widget and below the widget half again as much as its height.

Here is an example of a custom alignment position.

Align(
alignment: Alignment(0.7, -0.5),
child: Text("widget"),
)

alignment

Supplemental code

Here is the main.dart code used to make the above examples for your cut-and-paste convenience.

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),
),
);
}
  Expanded(
child: Align(
alignment: Alignment.centerRight,
child: Text("widget"),
),
)

Flutter Align Widget also Flutter Animated Align

You can easily align any widget in flutter using the flutter Align widget.

Align(
alignment: Alignment.center,
child: Text(
"ALIGN WIDGET",
style: TextStyle(fontSize: 35, fontWeight: FontWeight.bold),
)),

also, you can animate it:

AnimatedAlign(
alignment: clicked ? Alignment.bottomCenter : Alignment.topCenter,
duration: const Duration(seconds: 2),
child: const Text(
"ANIMATED WIDGET",
style: TextStyle(fontSize: 35, fontWeight: FontWeight.w800),
)),