Flutter 布局机制的核心就是 widget。在 Flutter 中,几乎所有东西都是一个 widget - 甚至布局模型都是 widget。您在 Flutter 应用中看到的图像、图标和文本都是 widget。 甚至你看不到的东西也是 widget,例如行(row)、列(column)以及用来排列、约束和对齐这些可见 widget 的网格(grid)。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序制作、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了康巴什免费建站欢迎大家使用!
您可以通过构建 widget 来构建更复杂的 widget。例如,下面左边的屏幕截图显示了 3 个图标,每个图标下有一个标签:
第二个屏幕截图显示布局结构,显示一个行包含 3 列,其中每列包含一个图标和一个标签。
注意: 本教程中的大多数屏幕截图都是在debugPaintSizeEnabled
为 true 时显示的,因此您可以看到布局结构。 有关更多信息,请参阅可视化调试,这是调试 Flutter Apps中的一节。
以下是此 UI 的 widget 树示意图:
大部分应该看起来应该像您所期望的,但你可能想了解一下 Container(以粉红色显示)。 Container 也是一个 widget,允许您自定义其子 widget。如果要添加填充,边距,边框或背景色,请使用 Container 来设置(译者语:只有容器有这些属性)。
在这个例子中,每个 Text 放置在 Container 中以添加边距。整个行也被放置在容器中以在行的周围添加填充。
本例 UI 中的其他部分也可以通过属性来控制。使用其 color 属性设置图标的颜色。使用 Text 的 style 属性来设置字体,颜色,粗细等。列和行的属性允许您指定他们的子项如何垂直或水平对齐,以及应该占据多少空间。
重点是什么?
如何在 Flutter 中布局单个 widget ?本节介绍如何创建一个简单的 widget 并将其显示在屏幕上。它还展示了一个简单的 Hello World 应用程序的完整代码。
在 Flutter 中,只需几个步骤即可在屏幕上放置文本,图标或图像。
new Text('Hello World', style: new TextStyle(fontSize: 32.0))
创建一个 Image widget:
new Image.asset('images/myPic.jpg', fit: BoxFit.cover)
创建一个 Icon widget:
new Icon(Icons.star, color: Colors.red[500])
new Center(
child: new Text('Hello World', style: new TextStyle(fontSize: 32.0))
class _MyHomePageState extends State {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Center(
child: new Text('Hello World', style: new TextStyle(fontSize: 32.0)),
),
);
}
}
Note:在设计用户界面时,您可以使用标准 widget 库中的 widget,也可以使用 Material Components 中的 widget。 您可以混合使用两个库中的 widget,可以自定义现有的 widget,也可以构建一组自定义的 widget。对于非 Material 应用程序,您可以将 Center widget 添加到应用程序的 build() 方法中:
// 这个App没有使用Material组件, 如Scaffold.
// 一般来说, app没有使用Scaffold的话,会有一个黑色的背景和一个默认为黑色的文本颜色。
// 这个app,将背景色改为了白色,并且将文本颜色改为了黑色以模仿Material app
import 'package:flutter/material.dart';
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Container(
decoration: new BoxDecoration(color: Colors.white),
child: new Center(
child: new Text('Hello World',
textDirection: TextDirection.ltr,
style: new TextStyle(fontSize: 40.0, color: Colors.black87)),
),
);
}
}
请注意,默认情况下,非 Material 应用程序不包含 AppBar,标题或背景颜色。 如果您想在非 Material 应用程序中使用这些功能,您必须自己构建它们。此应用程序将背景颜色更改为白色,将文本更改为深灰色以模仿 Material 应用程序。
当前名称:创新互联Flutter教程:Flutter布局方法
本文URL:http://www.shufengxianlan.com/qtweb/news33/128233.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联