55 lines
1.5 KiB
Dart
55 lines
1.5 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:photo_view/photo_view.dart';
|
|
import 'package:photo_view/photo_view_gallery.dart';
|
|
|
|
class FullScreenImagePage extends StatelessWidget {
|
|
final String imageUrl;
|
|
|
|
FullScreenImagePage({required this.imageUrl});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
body: GestureDetector(
|
|
onTap: () {
|
|
Navigator.pop(context); // 点击图片返回
|
|
},
|
|
child: Container(
|
|
child: RotatedBox(
|
|
quarterTurns: -1,
|
|
child: PhotoView(
|
|
imageProvider:
|
|
_getImageProvider(imageUrl), // 根据 imageUrl 动态选择图片加载方式
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
// 根据 imageUrl 判断并返回对应的 ImageProvider
|
|
ImageProvider<Object> _getImageProvider(String? imageUrl) {
|
|
if (imageUrl == null || imageUrl.isEmpty) {
|
|
// 如果图片路径为空,返回默认的占位图片
|
|
return AssetImage('images/icon_unHaveData.png'); // 默认占位图片路径
|
|
}
|
|
|
|
// 判断是否为网络地址
|
|
if (_isNetworkUrl(imageUrl)) {
|
|
return NetworkImage(imageUrl); // 网络图片
|
|
} else {
|
|
return FileImage(File(imageUrl)); // 本地文件图片
|
|
}
|
|
}
|
|
|
|
// 判断是否为网络地址
|
|
bool _isNetworkUrl(String url) {
|
|
final uri = Uri.tryParse(url);
|
|
return uri != null &&
|
|
uri.scheme.isNotEmpty &&
|
|
uri.scheme.startsWith('http');
|
|
}
|
|
}
|