水平布局和垂直布局确实很好用,但是有一种情况是无法完成的,比如放入一个图片,图片上再写一些字或者放入容器,这时候Row和Column就力不从心了,Flutter 为这种情况准备了Stack层叠布局。
层叠布局的 alignment 属性
alignment属性是控制层叠的位置的,建议在两个内容进行层叠时使用。它有两个值 X 轴距离和 Y 轴距离,值是从 0 到 1 的,都是从上层容器的左上角开始算起的。
CircleAvatar 组件的使用
CircleAvatar这个经常用来作头像的,组件里边有个radius的值可以设置图片的弧度。
现在我们准备放入一个图像,然后把弧度设置成 100,形成一个漂亮的圆形,代码如下:
new CircleAvatar(
backgroundImage: new NetworkImage('https://media.mybj123.com/wp-content/uploads/2021/03/1616051944-7e3cbdfbc059e26.jpg'),
radius: 100.0,
),
效果代码
想布局出这个效果还是比较容易的,代码如下:
import 'package:flutter/material.dart';
void main () => runApp(MyApp());
class MyApp extends StatelessWidget{
@override
Widget build(BuildContext context ){
var stack = Stack(
alignment: const FractionalOffset(0.5, 0.8),
children: [
CircleAvatar(
backgroundImage: new NetworkImage('https://media.mybj123.com/wp-content/uploads/2021/03/1616051944-7e3cbdfbc059e26.jpg'),
radius: 100.0,
),
Container(
decoration: BoxDecoration(
color: Colors.lightBlue,
),
padding: EdgeInsets.all(5.0),
child: Text(' Mybj'),
)
],
);
return MaterialApp(
title:'ListView widget',
home:Scaffold(
appBar: AppBar(
title: Text('垂直方向布局'),
),
body:Center(child:stack),
),
);
}
}
效果如下:

是不是觉的有了 Stack 层叠布局,我们在 Flutter 中的布局就更加灵活了那。小伙伴们可以动手实现一个你常见的布局效果。