app-starlock/lib/main/lockDetail/videoLog/widget/full_screenImage_page.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');
}
}