Flutter Row 横向排列、水平排列

参数详解

属性说明
mainAxisAlignment

主轴的排序方式

MainAxisAlignment.start

MainAxisAlignment.end

MainAxisAlignment.center

MainAxisAlignment.spaceBetween : 间距相同  首尾没有间距

MainAxisAlignment.spaceAround : 子元素平均充满

MainAxisAlignment.spaceEvenly : 间距相同 首尾有间距

crossAxisAlignment

次轴的排序方式

CrossAxisAlignment.start

CrossAxisAlignment.end

CrossAxisAlignment.center

CrossAxisAlignment.stretch  : 子元素宽充满

CrossAxisAlignment.baseline

mainAxisSize默认MainAxisSize.max
textDirection

正反排序

TextDirection.ltr

TextDirection.rtl

verticalDirection默认VerticalDirection.down
textBaseline官方:如果根据基线对齐项目,则使用哪个基线。
children子元素

代码示例

class MyBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.red,
      // width: 400,
      height: 400,
      child:Row(
        children: <Widget>[
          MyImage('https://raw.githubusercontent.com/think-ing/flutter_demo/master/images/a.jpg'),
          MyImage('https://raw.githubusercontent.com/think-ing/flutter_demo/master/images/b.jpg'),
          MyImage('https://raw.githubusercontent.com/think-ing/flutter_demo/master/images/c.jpg'),
          Text('abcdefg'),
          Text('cdefg'),
          Text('bcdefg'),
          Text('你好'),
        ],
      )
    );
  }
}



//定义一个 公共类
class MyImage extends StatelessWidget {
  String imgUrl;
  MyImage(this.imgUrl);
  @override
  Widget build(BuildContext context) {
    return Container(
      height: 100,
      width: 100,
      child: Image.network(this.imgUrl,fit: BoxFit.cover,),
    );
  }
}

 效果图

 

创建一个水平布局Row),通常用于前端开发中,尤其是基于框架如Flutter、CSS等场景下非常常见。下面我会详细介绍如何在Flutter中创建一个简单的水平布局。 ### Flutter 中的 Row 布局 **Row** 是一种水平排列布局组件,在Flutter中属于常用的Flexbox模型的一部分。通过它,你可以将子元素按行排布,并调整它们之间的对齐方式和其他属性。 #### 使用步骤: 1. **引入依赖库** 确保你的项目已经设置好Flutter环境。 2. **创建一个新的Row实例** ```dart Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, // 水平方向上主轴的对其方式 children: <Widget>[ Icon(Icons.star), // 添加第一个图标部件 Icon(Icons.home), // 第二个图标 Text('Hello World'), // 文本内容 ], ) ``` 上述代码片段展示了如何利用`mainAxisAlignment` 来控制各个小部件间的间距以及怎样添加多种类型的widget到一行内显示。 3. **理解关键属性** - `children`: 存储需要摆放的所有控件列表; - `mainAxisAlignment`: 定义了沿主线(横向)上孩子节点应该如何分布,默认值为中心(MainAxisAlignment.center); 其他常用选项包括start,end,between等等; - `crossAxisAlignment`: 规定交叉线上的位置信息比如top bottom center等; 4. **完整示例程序** 这里给出一个完整的例子帮助理解和实践row布局的实际应用效果: ```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(title: Text("Row Layout Example")), body: Center( child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, crossAxisAlignment: CrossAxisAlignment.end, children: [ Icon(Icons.account_circle,size:50), Container(width:80,height:60,color:Colors.red,), ElevatedButton(onPressed:null,child:Text('Click Me')), ] ), ) ), ); } } ``` 此段代码实现了三个不同类型的小工具按照指定样式呈现出来的一个界面展示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马志武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值