mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-10-30 17:54:57 +00:00 
			
		
		
		
	Create NetworkImage widget
This commit is contained in:
		| @@ -1,11 +1,10 @@ | ||||
| import 'package:cached_network_image/cached_network_image.dart'; | ||||
| import 'package:comunic/models/conversation_message.dart'; | ||||
| import 'package:comunic/models/user.dart'; | ||||
| import 'package:comunic/ui/widgets/account_image_widget.dart'; | ||||
| import 'package:comunic/ui/widgets/network_image_widget.dart'; | ||||
| import 'package:comunic/ui/widgets/text_rich_content_widget.dart'; | ||||
| import 'package:comunic/utils/date_utils.dart'; | ||||
| import 'package:comunic/utils/intl_utils.dart'; | ||||
| import 'package:comunic/utils/ui_utils.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
|  | ||||
| /// Conversation message tile | ||||
| @@ -74,38 +73,11 @@ class ConversationMessageTile extends StatelessWidget { | ||||
|   Widget _buildMessageImage(BuildContext context) { | ||||
|     return Container( | ||||
|       margin: EdgeInsets.only(bottom: 2), | ||||
|       child: Material( | ||||
|         child: InkWell( | ||||
|           onTap: () { | ||||
|             showImageFullScreen(context, message.imageURL); | ||||
|           }, | ||||
|           child: CachedNetworkImage( | ||||
|             imageUrl: message.imageURL, | ||||
|             width: 200.0, | ||||
|             height: 200.0, | ||||
|             fit: BoxFit.cover, | ||||
|             placeholder: (c, s) => Container( | ||||
|                   width: 200, | ||||
|                   height: 200, | ||||
|                   color: Colors.lightBlueAccent, | ||||
|                   child: Center( | ||||
|                     child: CircularProgressIndicator(), | ||||
|                   ), | ||||
|                 ), | ||||
|             errorWidget: (c, s, o) => Container( | ||||
|                   width: 200, | ||||
|                   height: 200, | ||||
|                   color: Colors.red, | ||||
|                   child: Center( | ||||
|                       child: Icon( | ||||
|                     Icons.error, | ||||
|                     color: Colors.white, | ||||
|                   )), | ||||
|                 ), | ||||
|           ), | ||||
|         ), | ||||
|         borderRadius: BorderRadius.all(Radius.circular(8.0)), | ||||
|         clipBehavior: Clip.hardEdge, | ||||
|       child: NetworkImageWidget( | ||||
|         url: message.imageURL, | ||||
|         allowFullScreen: true, | ||||
|         width: 200, | ||||
|         height: 200, | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
|   | ||||
							
								
								
									
										66
									
								
								lib/ui/widgets/network_image_widget.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								lib/ui/widgets/network_image_widget.dart
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| import 'package:cached_network_image/cached_network_image.dart'; | ||||
| import 'package:comunic/utils/ui_utils.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
|  | ||||
| /// Network image widget | ||||
| /// | ||||
| /// Widget useful to show remote image | ||||
| /// | ||||
| /// @author Pierre HUBERT | ||||
|  | ||||
| class NetworkImageWidget extends StatelessWidget { | ||||
|   final String url; | ||||
|   final bool allowFullScreen; | ||||
|   final double width; | ||||
|   final double height; | ||||
|  | ||||
|   const NetworkImageWidget({ | ||||
|     Key key, | ||||
|     @required this.url, | ||||
|     this.allowFullScreen = false, | ||||
|     this.width, | ||||
|     this.height, | ||||
|   })  : assert(url != null), | ||||
|         assert(allowFullScreen != null), | ||||
|         super(key: key); | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     return Material( | ||||
|       child: InkWell( | ||||
|         onTap: allowFullScreen | ||||
|             ? () { | ||||
|                 showImageFullScreen(context, url); | ||||
|               } | ||||
|             : null, | ||||
|         child: CachedNetworkImage( | ||||
|           imageUrl: url, | ||||
|           width: width, | ||||
|           height: height, | ||||
|           fit: BoxFit.cover, | ||||
|           placeholder: (c, s) => Container( | ||||
|                 width: width, | ||||
|                 height: height, | ||||
|                 color: Colors.lightBlueAccent, | ||||
|                 child: Center( | ||||
|                   child: CircularProgressIndicator(), | ||||
|                 ), | ||||
|               ), | ||||
|           errorWidget: (c, s, o) => Container( | ||||
|                 width: width, | ||||
|                 height: height, | ||||
|                 color: Colors.red, | ||||
|                 child: Center( | ||||
|                   child: Icon( | ||||
|                     Icons.error, | ||||
|                     color: Colors.white, | ||||
|                   ), | ||||
|                 ), | ||||
|               ), | ||||
|         ), | ||||
|       ), | ||||
|       borderRadius: BorderRadius.all(Radius.circular(8.0)), | ||||
|       clipBehavior: Clip.hardEdge, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user