// 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 createState() => _ShowImageMessageState(); // } // class _ShowImageMessageState extends State { // 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 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? list, List 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 { // @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 oldClipper) { // return oldClipper != this; // } // }