flutter学习(4)
1.Flutter Paddiing 组件在 html 中常见的布局标签都有 padding 属性,但是 Flutter 中很多 Widget 是没有 padding 属 性。这个时候我们可以用 Padding 组件处理容器与子元素直接的间距。import 'package:flutter/material.dart';import 'res/data.dart';void main() {run
·
1.Flutter Paddiing 组件
在 html 中常见的布局标签都有 padding 属性,但是 Flutter 中很多 Widget 是没有 padding 属 性。这个时候我们可以用 Padding 组件处理容器与子元素直接的间距。


import 'package:flutter/material.dart';
import 'res/data.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('flutter APP'),
),
body: HomeContent(),
),
);
}
}
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.fromLTRB(0, 0, 10, 0),
child: GridView.count(
crossAxisCount: 2,
childAspectRatio: 1.7, //配置宽度的比例
children: <Widget>[
Padding(
padding: EdgeInsets.fromLTRB(10, 10, 0, 0),
child: Image.network(
'https://www.itying.com/images/flutter/1.png',
fit: BoxFit.cover,
),
),
Padding(
padding: EdgeInsets.fromLTRB(10, 10, 0, 0),
child: Image.network(
'https://www.itying.com/images/flutter/1.png',
fit: BoxFit.cover,
),
),
Padding(
padding: EdgeInsets.fromLTRB(10, 10, 0, 0),
child: Image.network(
'https://www.itying.com/images/flutter/1.png',
fit: BoxFit.cover,
),
),
Padding(
padding: EdgeInsets.fromLTRB(10, 10, 0, 0),
child: Image.network(
'https://www.itying.com/images/flutter/1.png',
fit: BoxFit.cover,
),
),
Padding(
padding: EdgeInsets.fromLTRB(10, 10, 0, 0),
child: Image.network(
'https://www.itying.com/images/flutter/1.png',
fit: BoxFit.cover,
),
),
Padding(
padding: EdgeInsets.fromLTRB(10, 10, 0, 0),
child: Image.network(
'https://www.itying.com/images/flutter/1.png',
fit: BoxFit.cover,
),
),
],
));
}
}
2.Flutter Row 水平布局组件

自定义按钮组件

import 'package:flutter/material.dart';
import 'res/data.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('flutter APP'),
),
body: HomeContent(),
),
);
}
}
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return IconContainer(Icons.search,color: Colors.blue,);
}
}
// 定义一个动态生成图标的组件,参数由外层传入
class IconContainer extends StatelessWidget {
// 定义一个构造函数可以进行参数的传入与赋值
double size = 32.0;//设置默认值
IconData icon;//必传项
Color color=Colors.white;//设置默认值
IconContainer(this.icon,{this.size,this.color});//{}里的是选填项
@override
Widget build(BuildContext context) {
return Container(
width: 100.0,
height: 100.0,
color: this.color,
child: Center(
child: Icon(
this.icon,
size: this.size,
color: Colors.white,
),
),
);
}
}

import 'package:flutter/material.dart';
import 'res/data.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('flutter APP'),
),
body: HomeContent(),
),
);
}
}
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: 500.0,
height: 400.0,
color: Colors.red,
child: Row(
mainAxisAlignment: MainAxisAlignment.center, //设置水平显示方式
crossAxisAlignment: CrossAxisAlignment.start,//设置纵轴显示方式都是想对于外层的父盒子位置来说的
children: <Widget>[
IconContainer(
Icons.search,
color: Colors.blue,
),
IconContainer(
Icons.home,
color: Colors.red,
),
IconContainer(
Icons.hotel,
color: Colors.pink,
)
],
));
}
}
// 定义一个动态生成图标的组件,参数由外层传入
class IconContainer extends StatelessWidget {
// 定义一个构造函数可以进行参数的传入与赋值
double size = 32.0; //设置默认值
IconData icon; //必传项
Color color = Colors.white; //设置默认值
IconContainer(this.icon, {this.size, this.color}); //{}里的是选填项
@override
Widget build(BuildContext context) {
return Container(
width: 100.0,
height: 100.0,
color: this.color,
child: Center(
child: Icon(
this.icon,
size: this.size,
color: Colors.white,
),
),
);
}
}
3.Column垂直布局组件

- 和row用法一样
更多推荐

所有评论(0)