赞
踩
简介:布局类组件都会包含一个或多个子组件,不同的布局类组件对子组件排列(layout)方式不同。
所谓线性布局,即指沿水平或垂直方向排列子组件。Flutter 中通过Row和Column来实现线性布局。Row和Column都继承自Flex,我们将在弹性布局一节中详细介绍Flex。
主轴与纵轴
如果布局是沿水平方向,那么主轴就是指水平方向,而纵轴即垂直方向;如果布局沿垂直方向,那么主轴就是指垂直方向,而纵轴就是水平方向。在线性布局中,有两个定义对齐方式的枚举类MainAxisAlignment和CrossAxisAlignment,分别代表主轴对齐和纵轴对齐。
Row
- // ignore_for_file: deprecated_member_use
-
- import 'package:flutter/material.dart';
-
- void main() {
- runApp(const MyApp());
- }
-
- class MyApp extends StatelessWidget {
- const MyApp({Key? key}) : super(key: key);
-
- @override
- Widget build(BuildContext context) {
- return MaterialApp(
- title: 'Flutter layout demo',
- home: Scaffold(
- appBar: AppBar(
- title: const Text('Flutter layout demo'),
- ),
- body: aaa),
- );
- }
- }
-
- Widget aaa = Column(
- //测试Row对齐方式,排除Column默认居中对齐的干扰
- crossAxisAlignment: CrossAxisAlignment.start,
- children: <Widget>[
- Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: const <Widget>[
- Text(" hello world "),
- Text(" I am Jack "),
- ],
- ),
- Row(
- mainAxisSize: MainAxisSize.min,
- mainAxisAlignment: MainAxisAlignment.center,
- children: const <Widget>[
- Text(" hello world "),
- Text(" I am Jack "),
- ],
- ),
- Row(
- mainAxisAlignment: MainAxisAlignment.end,
- textDirection: TextDirection.rtl,
- children: const <Widget>[
- Text(" hello world "),
- Text(" I am Jack "),
- ],
- ),
- Row(
- crossAxisAlignment: CrossAxisAlignment.start,
- verticalDirection: VerticalDirection.up,
- children: const <Widget>[
- Text(
- " hello world ",
- style: TextStyle(fontSize: 30.0),
- ),
- Text(" I am Jack "),
- ],
- ),
- ],
- );
效果展示
前提:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。