写在前面,先看看 属性如图:。
建议放大看。
第一个布局
**
代码如下: 我用的比例布局,分为左右!
import 'package:flutter/material.dart';
class One_Top extends StatelessWidget{
@override
Widget build(BuildContext context) {
// TODO: implement build
return Container(
margin: EdgeInsets.all(10),//边距
child: DecoratedBox(//最外层样式,用盒子画出来
decoration: BoxDecoration(
//边框
gradient: LinearGradient(colors: [
Colors.lightBlue,
Colors.lightBlueAccent[700]
]),
//背景渐变
borderRadius: BorderRadius.circular(20),//边框圆角
//阴影设置
boxShadow: [
BoxShadow(
//样式
color: Colors.black38,
offset: Offset(2.0, 2.0),//偏移量
blurRadius: 4.0)//模糊的半径
]),
child: Container(
padding: EdgeInsets.all(10),
child: Flex(
//整个横条
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.end,
direction: Axis.horizontal,
children: <Widget>[
Expanded(
flex: 5,
child: Row(
children: <Widget>[
ClipOval(
child: Image.network(
'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=1395765958,3377106680&fm=27&gp=0.jpg',
height: 50,
width: 50,
fit: BoxFit.cover,
),
),
Text(
' 小杰 ',
style: TextStyle(color: Colors.black),
),
Icon(
Icons.verified_user,
color: Colors.green,
size: 14,
),
],
),
),
Expanded(
flex: 2,
child: Row(
children: <Widget>[
OutlineButton(//带有边框的按钮
onPressed: null,
child: Text(
'开通会员',
textAlign: TextAlign.center,
style: TextStyle(color: Colors.red),
),
color: Colors.blue,
borderSide: BorderSide(width: 2),
disabledBorderColor: Colors.red,
),
],
),
)
],
),
),
),
);
}
}
第二个布局:
import 'package:flutter/material.dart';
class Item_MusicList extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return Container(
child: Flex(
//最外层
direction: Axis.horizontal, //横向
crossAxisAlignment: CrossAxisAlignment.start, //设置从头开始
children: <Widget>[
Expanded(
//扩展
flex: 5,
child: Container(
margin: EdgeInsetsDirectional.only(start: 10),
height: 60,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
Text(
'明天的我们',
style: TextStyle(color: Colors.black, fontSize: 16),
),
Icon(
Icons.music_note,
color: Colors.green,
size: 15,
),
],
),
Row(
children: <Widget>[
Icon(
Icons.check_circle,
color: Colors.blue,
size: 14,
),
Icon(
Icons.high_quality,
color: Colors.red,
size: 14,
),
Text(
'明天的我们明天的我们-路南',
style: TextStyle(color: Colors.black45, fontSize: 14),
),
],
)
],
)),
),
Expanded(
flex: 1,
child: Container(
height: 60,
child: Column(
//这个是控制子布局的位置(Row:start-上 end-下 Column:start:左,end-右)
crossAxisAlignment: CrossAxisAlignment.center,
//这个是控制子组件从什么位置开始(这个是子布局的轴心位置决定) 比如:放cossAaxisAlignment:end说明在右边,那么右边的Y轴
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[Icon(Icons.play_arrow)],
),
),
),
],
),
);
}
}
第三种布局
代码:
import 'package:flutter/material.dart';
//电台
class Item_DianTai extends StatelessWidget{
@override
Widget build(BuildContext context) {
// TODO: implement build
return Container(
height: 140,
padding: EdgeInsets.all(5),
child: Flex(
direction: Axis.horizontal,
children: <Widget>[
//图片
Expanded(
flex: 2,
child: Stack(
alignment: AlignmentDirectional.center,
children: <Widget>[
Positioned(
child: Image.network(
'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=249787448,1681523128&fm=27&gp=0.jpg',
fit: BoxFit.cover,
height: 140,
),
),
Positioned(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(
Icons.play_arrow,
size: 40,
color: Colors.white,
),
Text(
'个性电台',
style: TextStyle(color: Colors.white),
)
],
)),
],
)),
Expanded(
//右边
flex: 4,
child: Container(
child: Column(
//上下
children: <Widget>[
Container(
//上
color: Colors.white70,
margin: EdgeInsets.all(1),
padding: EdgeInsets.only(left: 10),
child: Flex(
direction: Axis.horizontal,
children: <Widget>[
Expanded(
flex: 3,
child: Column(
mainAxisAlignment:
MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Text(
'新歌新碟',
style: TextStyle(
fontWeight: FontWeight.w400,
fontSize: 18),
),
Text(
'“元气少年”,不期而遇',
style:
TextStyle(color: Colors.black38),
),
],
)),
Expanded(
flex: 1,
child: Image.network(
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556614721495&di=71950285f5c1364e908b2ade5549746c&imgtype=0&src=http%3A%2F%2Fimglf1.ph.126.net%2FpugDzv2Jd-tn3FAyTitYiw%3D%3D%2F16325548666908388.jpg',
fit: BoxFit.cover,
height: 62,
)),
],
),
),
Container(
//下
color: Colors.white70,
margin: EdgeInsets.all(2),
padding: EdgeInsets.only(left: 10),
child: Flex(
direction: Axis.horizontal,
children: <Widget>[
Expanded(
flex: 3,
child: Column(
mainAxisAlignment:
MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Text(
'新歌新碟',
style: TextStyle(
fontWeight: FontWeight.w400,
fontSize: 18),
),
Text(
'“元气少年”,不期而遇',
style:
TextStyle(color: Colors.black38),
),
],
)),
Expanded(
flex: 1,
child: Image.network(
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556614721495&di=71950285f5c1364e908b2ade5549746c&imgtype=0&src=http%3A%2F%2Fimglf1.ph.126.net%2FpugDzv2Jd-tn3FAyTitYiw%3D%3D%2F16325548666908388.jpg',
fit: BoxFit.cover,
height: 62,
)),
],
),
),
],
),
),
),
],
),
);
}
}
第四种布局:
import 'package:flutter/material.dart';
class ItemSquare extends StatelessWidget {
var img_url;
var number;
ItemSquare(String img_url, String number) {
this.img_url = img_url;
this.number = number;
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return Container(
padding: EdgeInsets.all(2),
width: 100,
height: 100,
child: Stack(
alignment: Alignment.center, //指定未定位或部分定位widget的对齐方式
children: <Widget>[
Stack(
//叠加布局
children: <Widget>[
Positioned(
//定位
child: new ClipRect(
child: Image.network(
'$img_url',
fit: BoxFit.cover,
height: 130,
width: 130,
)),
// child: Image.network(
// '$img_url',
// fit: BoxFit.fitHeight,
// )
),
Positioned(
bottom: 5,
left: 2,
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Icon(
Icons.headset,
size: 14,
color: Colors.white,
),
Text(
'$number',
style: TextStyle(
color: Colors.white,
),
),
],
),
),
Positioned(
right: 5,
bottom: 5,
child: Icon(
Icons.play_circle_outline,
color: Colors.white,
size: 25,
),
)
],
)
],
),
);
}
}
第五种布局
import 'package:flutter/material.dart';
//三个子列表的item
class Item_GeDan extends StatelessWidget {
var image;
var titlename;
var author;
Item_GeDan(String image, String titlename, String author) {
this.image = image;
this.titlename = titlename;
this.author = author;
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return Container(
margin: EdgeInsets.all(5),
//比例布局
child: Flex(
direction: Axis.horizontal,
children: <Widget>[
//左边图片
Expanded(
flex: 3,
child: Stack(
overflow: Overflow.clip,
children: <Widget>[
Positioned(
child: Container(
width: 140,
height: 140,
child: Image.network(
'$image',
fit: BoxFit.cover,
)),
),
Positioned(
right: 10,
bottom: 10,
child: Icon(
Icons.play_circle_outline,
color: Colors.white,
)),
],
)),
//右边数据
Expanded(
flex: 5,
child: Column(
textDirection: TextDirection.ltr,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
DecoratedBox(
//装饰器盒子
decoration: BoxDecoration(
//装饰器类型
border: Border.all(
//边框设置
color: Colors.black54),
),
child: Padding(
padding: EdgeInsets.symmetric(vertical: 2, horizontal: 4),
child: Text(
"歌单",
style: TextStyle(color: Colors.black26),
),
)),
Text('$titlename',
style: TextStyle(color: Colors.black, fontSize: 18)),
Text(
'$author',
style: TextStyle(color: Colors.black54, fontSize: 14),
),
Row(
children: <Widget>[
Icon(
Icons.headset,
color: Colors.black54,
size: 14,
),
Text('123万'),
],
)
],
),
)
],
),
);
}
}
第六种
代码如下:
import 'package:flutter/material.dart';
class Item_Type extends StatelessWidget{
@override
Widget build(BuildContext context) {
// TODO: implement build
return Container(
margin: EdgeInsets.all(5),
padding: EdgeInsets.all(5),
child: DecoratedBox(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(10)),
boxShadow: [
//阴影
BoxShadow(offset: Offset(2.0, 2.0), blurRadius: 10)
]),
child: Padding(
padding: EdgeInsets.all(10),
child: Flex(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
direction: Axis.horizontal,
children: <Widget>[
Expanded(
flex: 1,
child: Column(
children: <Widget>[
Icon(Icons.account_circle, color: Colors.green),
Text('歌手')
],
)),
Expanded(
flex: 1,
child: Column(
children: <Widget>[
Icon(Icons.equalizer, color: Colors.green),
Text('排行')
],
),
),
Expanded(
flex: 1,
child: Column(
children: <Widget>[
Icon(Icons.dashboard, color: Colors.green),
Text('分类歌单')
],
),
),
Expanded(
flex: 1,
child: Column(
children: <Widget>[
Icon(Icons.nature, color: Colors.green),
Text('电台')
],
),
),
Expanded(
flex: 1,
child: Column(
children: <Widget>[
Icon(Icons.account_circle, color: Colors.green),
Text('一起听')
],
),
),
],
),
)),
);
}
}
。。。更多的 等遇到了 再继续添加吧!!!