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 _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'); } }