Row布局(行布局,水平方向布局)
import 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget{ @override Widget build(BuildContext context){ return MaterialApp( title: "后台标题", home: Scaffold( appBar: new AppBar( title: new Text("水平方向布局"), ), body: new Row( //行布局 children: <Widget>[ Expanded(child: //Expanded灵活布局(平分布局大小) new RaisedButton( onPressed: (){},//点击事件 color: Colors.redAccent, child: new Text("红色按钮"), ), ), new RaisedButton( //不加Expanded就根据字体大小获得按钮大小 onPressed: (){}, color: Colors.blue, child: new Text("蓝色按钮"), ), Expanded(child: new RaisedButton( onPressed: (){}, color: Colors.lightGreenAccent, child: new Text("绿色按钮"), ), ), ], ), ), ); }}
Column垂直方向布局
import 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget{ @override Widget build(BuildContext context){ return MaterialApp( title: "后台标题", home: Scaffold( appBar: new AppBar( title: new Text("垂直方向布局"), ), //这个位置把Center去掉的话只能根据屏幕垂直居中,使用要加上Center才能完美屏幕居中 body:Center(child: new Column(//垂直布局 crossAxisAlignment: CrossAxisAlignment.center,//根据文本最长的对齐方式 center居中对齐 end尾部对齐 start头对齐 mainAxisAlignment: MainAxisAlignment.center,//相对于Column界面垂直方向居中对齐 children: <Widget>[ Text("文本1"), //加入Expanded可以使文本3去到底部,文本1在顶部,文本2在文本1下面,Expanded把文本2进行了填充 Expanded(child: Text("文本2文本2文本2文本2"),), Text("文本3"), ], ) ) ), ); }}
Stack层叠布局
import 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget{ @override Widget build(BuildContext context){ var stack=new Stack( alignment: const FractionalOffset(0.5, 0.94),//配置文本的位置 children: <Widget>[ new CircleAvatar(//圆形图片 backgroundImage: new NetworkImage('http://img5.mtime.cn/mt/2020/11/22/123214.39240924_1280X720X2.jpg'), radius: 100.0, ), new Container(//盒子容器 decoration: new BoxDecoration( color: Colors.blue ), padding: EdgeInsets.all(5.0), child: Text("注意呀"), ) ], ); return MaterialApp( title: "后台标题", home: Scaffold( appBar: new AppBar( title: new Text("Stack层叠布局"), ), body:Center( child: stack,//引用stack ) ), ); }}
绝对定位(适合多元素重叠)
import 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget{ @override Widget build(BuildContext context){ var stack=new Stack( alignment: const FractionalOffset(0.5, 0.94),//配置文本的位置 children: <Widget>[ new CircleAvatar(//圆形图片 backgroundImage: new NetworkImage('http://img5.mtime.cn/mt/2020/11/22/123214.39240924_1280X720X2.jpg'), radius: 100.0, ), new Positioned(//相对于css的绝对定位 top: 10.0, left: 10.0, child: new Text("文本1"), ), new Positioned( bottom: 10.0, right: 10.0, child: new Text("文本2"), ) ], ); return MaterialApp( title: "后台标题", home: Scaffold( appBar: new AppBar( title: new Text("Stack层叠布局"), ), body:Center( child: stack,//引用stack ) ), ); }}
ListView和GridView网格第二章已有
import 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget{ @override Widget build(BuildContext context){ var card=new Card(//定义一个卡片布局 child: Column( children: <Widget>[ ListTile( title: Text('广东省普宁市',style: TextStyle(fontWeight: FontWeight.w500),), subtitle: Text("WWT1008611"), leading: new Icon(Icons.account_box,color: Colors.lightBlue,), ),new Divider(),//分割线 ListTile( title: Text('广东省普宁市',style: TextStyle(fontWeight: FontWeight.w500),), subtitle: Text("WWT1008611"), leading: new Icon(Icons.account_box,color: Colors.lightBlue,), ),new Divider(),//分割线 ListTile( title: Text('广东省普宁市',style: TextStyle(fontWeight: FontWeight.w500),), subtitle: Text("WWT1008611"), leading: new Icon(Icons.account_box,color: Colors.lightBlue,), ), ], ), ); return MaterialApp( title: "后台标题", home: Scaffold( appBar: new AppBar( title: new Text("卡片布局"), ), body:Center( child: card,//引用card ) ), ); }}