Files
zh-chat-flutter/lib/views/conversation/preview/image_widget.dart
2022-10-26 14:05:58 +08:00

79 lines
2.5 KiB
Dart

import 'dart:io';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:chat/configs/app_colors.dart';
import 'package:chat/constants/message_constant.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:photo_view/photo_view.dart';
import 'package:photo_view/photo_view_gallery.dart';
class PreviewImageWidget extends StatelessWidget {
final IMG_PREVIEW_TYPE type;
final String path;
final String original;
const PreviewImageWidget({
Key? key,
required this.type,
required this.path,
required this.original,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Material(
color: AppColors.black,
child: SafeArea(
child: Stack(
children: [
Positioned.fill(
child: PhotoViewGallery.builder(
pageController: PageController(initialPage: 0),
itemCount: 1,
builder: (context, index) {
if (type == IMG_PREVIEW_TYPE.local) {
return PhotoViewGalleryPageOptions(
imageProvider: FileImage(File(path)),
minScale: PhotoViewComputedScale.contained,
maxScale: PhotoViewComputedScale.covered * 2,
);
} else {
if (path.split('?').first.isImageFileName) {
return PhotoViewGalleryPageOptions(
imageProvider: CachedNetworkImageProvider(path),
minScale: PhotoViewComputedScale.contained,
maxScale: PhotoViewComputedScale.covered * 2,
);
} else {
return PhotoViewGalleryPageOptions.customChild(
child: const Center(
child: Text(
'格式不支持',
style: TextStyle(
color: AppColors.white,
),
),
),
);
}
}
},
),
),
const SafeArea(
child: Padding(
padding: EdgeInsets.all(4.0),
child: BackButton(
color: AppColors.white,
),
),
)
],
),
),
);
}
}