会话页面
This commit is contained in:
283
lib/views/conversation/widgets/show_image_message_copy.dart
Normal file
283
lib/views/conversation/widgets/show_image_message_copy.dart
Normal file
@@ -0,0 +1,283 @@
|
||||
// import 'dart:io';
|
||||
// import 'dart:math';
|
||||
// import 'package:cached_network_image/cached_network_image.dart';
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:get/get.dart';
|
||||
// import 'package:scaffold/constants/message_constant.dart';
|
||||
// import 'package:scaffold/utils/ui_tools.dart';
|
||||
// import 'package:scaffold/views/im/conversation/preview/index_page.dart';
|
||||
// import 'package:scaffold/views/moments/index/widgets/media_preview.dart';
|
||||
// import 'package:tencent_im_sdk_plugin/models/v2_tim_image.dart';
|
||||
// import 'package:tencent_im_sdk_plugin/models/v2_tim_message.dart';
|
||||
// import 'package:transparent_image/transparent_image.dart';
|
||||
|
||||
// class ShowImageMessage extends StatefulWidget {
|
||||
// final V2TimMessage message;
|
||||
|
||||
// const ShowImageMessage(this.message, {Key? key}) : super(key: key);
|
||||
|
||||
// @override
|
||||
// State<ShowImageMessage> createState() => _ShowImageMessageState();
|
||||
// }
|
||||
|
||||
// class _ShowImageMessageState extends State<ShowImageMessage> {
|
||||
// bool imageIsRender = false;
|
||||
|
||||
// @override
|
||||
// didUpdateWidget(oldWidget) {
|
||||
// var oldImgListLength = oldWidget.message.imageElem?.imageList?.length ?? 0;
|
||||
// var currImgListLength = widget.message.imageElem?.imageList?.length ?? 0;
|
||||
// if (currImgListLength == 1 && oldImgListLength == 0) {
|
||||
// setState(() {
|
||||
// imageIsRender = true;
|
||||
// });
|
||||
// }
|
||||
// super.didUpdateWidget(oldWidget);
|
||||
// }
|
||||
|
||||
// @override
|
||||
// Widget build(BuildContext context) {
|
||||
// V2TimImage? originalImg =
|
||||
// getImageFromList(V2_TIM_IMAGE_TYPES_ENUM.original);
|
||||
// V2TimImage? smallImg = getImageFromList(V2_TIM_IMAGE_TYPES_ENUM.small);
|
||||
|
||||
// return Container(
|
||||
// decoration: BoxDecoration(
|
||||
// borderRadius: const BorderRadius.all(Radius.circular(4)),
|
||||
// border: Border.all(
|
||||
// color: const Color.fromRGBO(245, 166, 35, 0),
|
||||
// width: 2,
|
||||
// ),
|
||||
// ),
|
||||
// child: LayoutBuilder(
|
||||
// builder: (BuildContext context, BoxConstraints constraints) {
|
||||
// return ConstrainedBox(
|
||||
// constraints: BoxConstraints(
|
||||
// maxWidth: constraints.maxWidth * 0.5,
|
||||
// minWidth: 64,
|
||||
// maxHeight: 256,
|
||||
// ),
|
||||
// child: imageBuilder(
|
||||
// originalImg: originalImg,
|
||||
// smallImg: smallImg,
|
||||
// ),
|
||||
// );
|
||||
// },
|
||||
// ),
|
||||
// );
|
||||
// }
|
||||
|
||||
// Widget imageBuilder({V2TimImage? originalImg, V2TimImage? smallImg}) {
|
||||
// if (originalImg == null) {
|
||||
// // 有path
|
||||
// if (widget.message.imageElem!.path!.isNotEmpty &&
|
||||
// File(widget.message.imageElem!.path!).existsSync()) {
|
||||
// return getImage(
|
||||
// GestureDetector(
|
||||
// onTap: () {
|
||||
// Get.to(ImagePreviewPage(
|
||||
// type: IMG_PREVIEW_TYPE.local,
|
||||
// path: widget.message.imageElem!.path!,
|
||||
// ));
|
||||
// },
|
||||
// child: Image.file(
|
||||
// File(widget.message.imageElem!.path!),
|
||||
// fit: BoxFit.fitWidth,
|
||||
// ),
|
||||
// ),
|
||||
// imageElem: null,
|
||||
// );
|
||||
// } else {
|
||||
// return errorDisplay();
|
||||
// }
|
||||
// } else if (!Platform.isAndroid &&
|
||||
// widget.message.imageElem!.path!.isNotEmpty &&
|
||||
// File(widget.message.imageElem!.path!).existsSync() &&
|
||||
// !imageIsRender) {
|
||||
// return getImage(
|
||||
// GestureDetector(
|
||||
// onTap: () {
|
||||
// Get.to(ImagePreviewPage(
|
||||
// type: IMG_PREVIEW_TYPE.local,
|
||||
// path: widget.message.imageElem!.path!,
|
||||
// ));
|
||||
// },
|
||||
// child: Image.file(
|
||||
// File(widget.message.imageElem!.path!),
|
||||
// fit: BoxFit.fitWidth,
|
||||
// ),
|
||||
// ),
|
||||
// imageElem: e,
|
||||
// );
|
||||
// } else if ((smallImg?.url ?? originalImg.url) != null && !imageIsRender) {
|
||||
// double positionRadio = 1.0;
|
||||
// if (smallImg?.width != null &&
|
||||
// smallImg?.height != null &&
|
||||
// smallImg?.width != 0 &&
|
||||
// smallImg?.height != 0) {
|
||||
// positionRadio = (smallImg!.width! / smallImg.height!);
|
||||
// }
|
||||
// String bigImgUrl = originalImg.url ?? getBigPicUrl();
|
||||
// if (bigImgUrl.isEmpty && smallImg?.url != null) {
|
||||
// bigImgUrl = smallImg!.url!;
|
||||
// }
|
||||
// return Stack(
|
||||
// alignment: AlignmentDirectional.topStart,
|
||||
// children: [
|
||||
// AspectRatio(
|
||||
// aspectRatio: positionRadio,
|
||||
// child: Container(
|
||||
// decoration: const BoxDecoration(color: Colors.white),
|
||||
// ),
|
||||
// ),
|
||||
// getImage(
|
||||
// GestureDetector(
|
||||
// onTap: () {
|
||||
// Get.to(ImagePreviewPage(
|
||||
// type: IMG_PREVIEW_TYPE.url,
|
||||
// path: smallImg?.url ?? originalImg.url!,
|
||||
// ));
|
||||
// },
|
||||
// child: CachedNetworkImage(
|
||||
// alignment: Alignment.topCenter,
|
||||
// imageUrl: smallImg?.url ?? originalImg.url!,
|
||||
// errorWidget: (context, error, stackTrace) => errorDisplay(),
|
||||
// fit: BoxFit.fitWidth,
|
||||
// cacheKey: smallImg?.uuid ?? originalImg.uuid!,
|
||||
// placeholder: (context, url) =>
|
||||
// Image(image: MemoryImage(kTransparentImage)),
|
||||
// fadeInDuration: const Duration(milliseconds: 0),
|
||||
// ),
|
||||
// ),
|
||||
// imageElem: e,
|
||||
// ),
|
||||
// ],
|
||||
// );
|
||||
// } else {
|
||||
// // 有path
|
||||
// if (widget.message.imageElem!.path!.isNotEmpty &&
|
||||
// File(widget.message.imageElem!.path!).existsSync()) {
|
||||
// return getImage(
|
||||
// GestureDetector(
|
||||
// onTap: () {
|
||||
// Get.to(ImagePreviewPage(
|
||||
// type: IMG_PREVIEW_TYPE.local,
|
||||
// path: widget.message.imageElem!.path!,
|
||||
// ));
|
||||
// },
|
||||
// child: Image.file(
|
||||
// File(widget.message.imageElem!.path!),
|
||||
// fit: BoxFit.fitWidth,
|
||||
// ),
|
||||
// ),
|
||||
// imageElem: null,
|
||||
// );
|
||||
// } else {
|
||||
// return errorDisplay();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// Widget errorDisplay() {
|
||||
// return Container(
|
||||
// decoration: BoxDecoration(
|
||||
// borderRadius: const BorderRadius.all(Radius.circular(5)),
|
||||
// border: Border.all(
|
||||
// width: 1,
|
||||
// color: Colors.black12,
|
||||
// ),
|
||||
// ),
|
||||
// height: 100,
|
||||
// child: Center(
|
||||
// child: Row(
|
||||
// mainAxisAlignment: MainAxisAlignment.center,
|
||||
// children: const [
|
||||
// Icon(
|
||||
// Icons.warning_amber_outlined,
|
||||
// size: 16,
|
||||
// ),
|
||||
// Text(
|
||||
// '图片加载失败',
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// );
|
||||
// }
|
||||
|
||||
// void pushToPreview(List<String> mediaList) {
|
||||
// Get.dialog(
|
||||
// MomentMediaPreview(
|
||||
// mediaSourceList: mediaList,
|
||||
// initialPage: 0,
|
||||
// ),
|
||||
// useSafeArea: false,
|
||||
// );
|
||||
// }
|
||||
|
||||
// Widget getImage(image, {imageElem}) {
|
||||
// Widget res = ClipRRect(
|
||||
// clipper: ImageClipper(),
|
||||
// child: image,
|
||||
// );
|
||||
// return res;
|
||||
// }
|
||||
|
||||
// V2TimImage? getImageFromList(V2_TIM_IMAGE_TYPES_ENUM imgType) {
|
||||
// V2TimImage? img = getImageFromImgList(
|
||||
// widget.message.imageElem!.imageList,
|
||||
// HistoryMessageDartConstant.imgPriorMap[imgType] ??
|
||||
// HistoryMessageDartConstant.oriImgPrior,
|
||||
// );
|
||||
// return img;
|
||||
// }
|
||||
|
||||
// String getBigPicUrl() {
|
||||
// // 实际拿的是原图
|
||||
// V2TimImage? img = getImageFromImgList(
|
||||
// widget.message.imageElem!.imageList,
|
||||
// HistoryMessageDartConstant.oriImgPrior,
|
||||
// );
|
||||
// if (img == null) {
|
||||
// setState(() {
|
||||
// imageIsRender = true;
|
||||
// });
|
||||
// }
|
||||
// return img == null ? widget.message.imageElem!.path! : img.url!;
|
||||
// }
|
||||
|
||||
// V2TimImage? getImageFromImgList(List<V2TimImage?>? list, List<String> order) {
|
||||
// V2TimImage? img;
|
||||
// try {
|
||||
// for (String type in order) {
|
||||
// img = list?.firstWhere(
|
||||
// (e) => e?.type == HistoryMessageDartConstant.V2_TIM_IMAGE_TYPES[type],
|
||||
// orElse: () => null,
|
||||
// );
|
||||
// }
|
||||
// } catch (e) {
|
||||
// UiTools.toast('getImageFromImgList error ${e.toString()}');
|
||||
// }
|
||||
// return img;
|
||||
// }
|
||||
// }
|
||||
|
||||
// class ImageClipper extends CustomClipper<RRect> {
|
||||
// @override
|
||||
// RRect getClip(Size size) {
|
||||
// return RRect.fromRectAndRadius(
|
||||
// Rect.fromLTWH(
|
||||
// 0,
|
||||
// 0,
|
||||
// size.width,
|
||||
// min(size.height, 256),
|
||||
// ),
|
||||
// const Radius.circular(5),
|
||||
// );
|
||||
// }
|
||||
|
||||
// @override
|
||||
// bool shouldReclip(CustomClipper<RRect> oldClipper) {
|
||||
// return oldClipper != this;
|
||||
// }
|
||||
// }
|
||||
Reference in New Issue
Block a user