Container
widget 可以用来创建一个可见的矩形元素。 Container 可以使用 BoxDecoration
来进行装饰,如背景,边框,或阴影等。 Container
还可以设置外边距、内边距和尺寸的约束条件等。另外,Container
可以使用矩阵在三维空间进行转换。
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Container(
child: Text('Hello Flutter'),
alignment: Alignment.topCenter,
height: 300.0,
width: 300.0,
decoration: BoxDecoration(
color: Colors.yellow,
border: Border.all(
color: Colors.blue,
width: 2.0,
),
),
),
);
}
}
图片控件是显示图像的控件,常用 Image.asset
导入本地图片、Image.network
导入网络图片。
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Container(
width: 300,
height: 300,
decoration: BoxDecoration(
color: Colors.yellow,
),
child: Image.network(
"https://flutter.cn/static/4ea7d7f5f72649f0bcec.png",
alignment: Alignment.topLeft,
// color: Colors.blue,
// colorBlendMode: BlendMode.luminosity,
fit: BoxFit.contain,
repeat: ImageRepeat.repeat,
),
),
);
}
}
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Container(
width: 300,
height: 300,
decoration: BoxDecoration(
color: Colors.yellow,
borderRadius: BorderRadius.circular(150),
image: DecorationImage(
image: NetworkImage(
"https://flutter.cn/static/4ea7d7f5f72649f0bcec.png"),
fit: BoxFit.contain,
repeat: ImageRepeat.repeat,
),
)),
);
}
}
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Container(
child: ClipOval(
child: Image.network(
"https://flutter.cn/static/4ea7d7f5f72649f0bcec.png",
height: 200,
width: 200,
fit: BoxFit.cover,
),
),
),
);
}
}
新建三个目录
项目根目录\images\(2.0x/3.0x/4.0x)
将图片放入images
和这三个文件夹中
配置 pubspec.yaml
文件
在 flutter 下配置 assets:
flutter:
uses-material-design: true
assets:
- images/1.jpg
- images/2.0x/1.jpg
- images/3.0x/1.jpg
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Container(
child: ClipOval(
child: Image.asset(
"images/1.jpg",
height: 200,
width: 200,
fit: BoxFit.cover,
),
),
),
);
}
}
列表默认为垂直列表:
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView(
padding: EdgeInsets.all(10),
children: [
// 数组里可以放其他 Widget
ListTile(
// 设置前置图标
leading: Icon(
Icons.settings,
// 改变图标样式
color: Colors.yellow,
size: 30,
),
title: Text(
'点亮你的Vue技术栈,万字Nuxt.js实践笔记来了',
// 设置字体
style: TextStyle(
fontSize: 16,
),
),
subtitle: Text('作为一位 Vuer(vue开发者),如果还不会这个框架,那么你的 Vue 技术栈还没被点亮'),
// 设置后置图标
trailing: Icon(Icons.sentiment_satisfied_sharp),
),
ListTile(
title: Text('如何用 docker 打造前端开发环境'),
subtitle: Text('如何使用 docker 打造前端开发环境 docker 的用法很多,除了可以用来部署项目,还可'),
),
ListTile(
title: Text('如何做前端Code Review'),
subtitle: Text('向互联网大厂学习,从代码格式、代码错误、代码习惯、代码优化四个角度进行前端Co'),
),
],
);
}
}
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
height: 240,
child: ListView(
// 配置方向,默认为垂直列表
scrollDirection: Axis.horizontal,
children: [
Container(
width: 180,
color: Colors.yellow,
),
Container(
width: 180,
color: Colors.orange,
// 列表嵌套
child: ListView(
children: [
Image.network(
"https://flutter.cn/static/4ea7d7f5f72649f0bcec.png",
),
Image.network(
"https://flutter.cn/static/4ea7d7f5f72649f0bcec.png",
),
],
),
),
Container(
width: 180,
color: Colors.red,
),
],
),
);
}
}
动态列表可以动态循环数据。
class HomeContent extends StatelessWidget {
// 自定义私有方法
List _getData() {
List list = [];
for (var i = 0; i < 20; i++) {
list.add(ListTile(
title: Text('this is list $i'),
));
}
return list;
}
@override
Widget build(BuildContext context) {
return ListView(
children: this._getData(),
);
}
}
使用外部数据:
// lib/res/listData.dart
List listData = [
{
"title": "4 年经验裸辞 2 个月,40 场面试、一路的心态变化及经验总结",
"author": "天明夜尽",
"imgUrl":
"https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/78e7025d384846e9b0314a53a2adab36~tplv-k3u1fbpfcp-zoom-crop-mark:1304:1304:1304:734.awebp?",
},
{
"title": "[万字总结]我还在正确的道路上么?2021年一个前端新人的半年学习工作总结",
"author": "速冻鱼",
"imgUrl":
"https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e4a813587ec84152b243c3d54323d01e~tplv-k3u1fbpfcp-zoom-crop-mark:1304:1304:1304:734.awebp?",
}
];
// lib/main.dart
import 'res/listData.dart';
...
class HomeContent extends StatelessWidget {
// 自定义私有方法
List _getData() {
var tempList = listData.map((value) {
return ListTile(
leading: Image.network(value["imgUrl"]),
title: Text(value["title"]),
subtitle: Text(value["author"]),
);
});
return tempList.toList();
}
@override
Widget build(BuildContext context) {
return ListView(
children: this._getData(),
);
}
}
使用 ListView.builder:
class HomeContent extends StatelessWidget {
List _getData() {
var tempList = listData.map((value) {
return ListTile(
leading: Image.network(value["imgUrl"]),
title: Text(value["title"]),
subtitle: Text(value["author"]),
);
});
return tempList.toList();
}
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: this._getData().length,
itemBuilder: (context, index) {
return this._getData()[index];
},
);
}
}
等价于:
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: listData.length,
itemBuilder: (context, index) {
return ListTile(
leading: Image.network(listData[index]["imgUrl"]),
title: Text(listData[index]["title"]),
subtitle: Text(listData[index]["author"]),
);
},
);
}
}
ilder(
itemCount: listData.length,
itemBuilder: (context, index) {
return ListTile(
leading: Image.network(listData[index]["imgUrl"]),
title: Text(listData[index]["title"]),
subtitle: Text(listData[index]["author"]),
);
},
);
}
}
按照国际惯例,给大家分享一套十分好用的Android进阶资料:《全网最全Android开发笔记》。
整个笔记一共8大模块、729个知识点,3382页,66万字,可以说覆盖了当下Android开发最前沿的技术点,和阿里、腾讯、字节等等大厂面试看重的技术。
因为所包含的内容足够多,所以,这份笔记不仅仅可以用来当学习资料,还可以当工具书用。
如果你需要了解某个知识点,不管是Shift+F 搜索,还是按目录进行检索,都能用最快的速度找到你要的内容。
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照整个知识体系编排的。
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
……
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计
……
1、设计思想与代码质量优化
2、程序性能优化
3、开发效率优化
……
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析
……
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习
……
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门
……
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战
……
1、准备开始
2、基础
3、类和对象
4、函数和lambda表达式
5、其他
……
好啦,这份资料就给大家介绍到这了,有需要详细文档的小伙伴,可以微信扫下方二维码免费领取哈~