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

我想在其父级内对齐 Flutter 小部件。我知道我可以通过将一个小部件包装在一个中心小部件中来居中它。

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

但是如何将其对齐到右侧、底部、顶部中间等?

注意事项:

我说的是单个 child ,而不是行或列中的多个 child 。请参阅这些 SO 问题:

  • Align Text widgets in a row widget
  • FLUTTER | Right Align not working

这个问题是正确的,但我想提出一个更规范的问题:

  • How to left align the OutlineButton icon in Flutter

最佳答案

如何对齐小部件

要在其父窗口中对齐子窗口小部件,请使用 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.topLeftAlignment(-1.0, -1.0)
  • Alignment.topCenterAlignment(0.0, -1.0)
  • Alignment.topRightAlignment(1.0, -1.0)
  • Alignment.centerLeftAlignment(-1.0, 0.0)
  • Alignment.centerAlignment(0.0, 0.0)
  • Alignment.centerRightAlignment(1.0, 0.0)
  • Alignment.bottomLeftAlignment(-1.0, 1.0)
  • Alignment.bottomCenterAlignment(0.0, 1.0)
  • Alignment.bottomRightAlignment(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/

相关文章:

dart - 在 Flutter 中将焦点滑动到 TextField

android - 如何在 Flutter 中添加 Webview?

flutter - 如何获取 Flutter 应用的构建和版本号

ios - 无法导入使用 Cocoapods 安装的依赖项

android - flutter : How to change Android minSdkVe

dart - TabController 构造函数中的 `vsync` 属性

flutter - 使容器小部件垂直填充父级

android - Flutter - 从现有的 android 项目导入

flutter - Flutter AppBar 上的渐变背景

Flutter - 自定义字体不显示