1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-11-22 12:59:21 +00:00

Create NetworkImage widget

This commit is contained in:
Pierre HUBERT 2019-05-11 09:43:30 +02:00
parent ddbea1727b
commit 35e9c30ba2
2 changed files with 72 additions and 34 deletions

View File

@ -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(
child: NetworkImageWidget(
url: message.imageURL,
allowFullScreen: true,
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,
),
);
}

View 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,
);
}
}