团队作业博客(十)实现查看图片
import 'package:flutter/material.dart';
import 'package:photo_view/photo_view.dart';
void main() {
runApp(MaterialApp(
home: Picture1(),
));
}
class Picture1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: PictureListPage(),
);
}
}
class PictureListPage extends StatelessWidget {
final List<String> imagePaths = [
'assets/images/picture0.jpg',
'assets/images/picture1.jpg',
'assets/images/picture2.jpg',
'assets/images/picture3.jpg',
'assets/images/picture4.jpg',
'assets/images/picture5.jpg',
'assets/images/picture6.jpg',
// 确保图像数量为偶数,或者你可以在末尾添加更多的图像或占位符
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('图片列表'),
),
body: GridView.count(
crossAxisCount: 2, // 每行两列
children: imagePaths.map((path) => _buildPictureItem(context, path)).toList(),
),
);
}
Widget _buildPictureItem(BuildContext context, String imagePath) {
return Card(
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PhotoViewWrapper(imageProvider: AssetImage(imagePath)),
),
);
},
child: Image.asset(
imagePath,
fit: BoxFit.cover,
width: MediaQuery.of(context).size.width / 2 - 16, // 减去左右padding的宽度
alignment: Alignment.center,
),
),
);
}
}
class PhotoViewWrapper extends StatelessWidget {
final ImageProvider imageProvider;
PhotoViewWrapper({required this.imageProvider});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('查看图片'),
),
body: Center(
child: PhotoView(
imageProvider: imageProvider,
loadingBuilder: (context, progress) => Center(
child: CircularProgressIndicator(),
),
errorBuilder: (context, error, stackTrace) => Center(
child: Icon(Icons.error),
),
),
),
);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix