ui: Remove the ThumbnailService for images

This commit is contained in:
PapaTutuWawa 2022-08-14 13:25:17 +02:00
parent 58bccc1d83
commit 1886bf7ecc
5 changed files with 29 additions and 76 deletions

View File

@ -1,3 +1,4 @@
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart';
@ -10,7 +11,6 @@ import 'package:moxxyv2/ui/helpers.dart';
import 'package:moxxyv2/ui/widgets/avatar.dart'; import 'package:moxxyv2/ui/widgets/avatar.dart';
import 'package:moxxyv2/ui/widgets/chat/chatbubble.dart'; import 'package:moxxyv2/ui/widgets/chat/chatbubble.dart';
import 'package:moxxyv2/ui/widgets/chat/media/media.dart'; import 'package:moxxyv2/ui/widgets/chat/media/media.dart';
import 'package:moxxyv2/ui/widgets/chat/thumbnail.dart';
import 'package:moxxyv2/ui/widgets/chat/typing.dart'; import 'package:moxxyv2/ui/widgets/chat/typing.dart';
import 'package:moxxyv2/ui/widgets/textfield.dart'; import 'package:moxxyv2/ui/widgets/textfield.dart';
import 'package:moxxyv2/ui/widgets/topbar.dart'; import 'package:moxxyv2/ui/widgets/topbar.dart';
@ -428,15 +428,11 @@ class ConversationPageState extends State<ConversationPage> {
final query = MediaQuery.of(context); final query = MediaQuery.of(context);
if (state.backgroundPath.isNotEmpty) { if (state.backgroundPath.isNotEmpty) {
return ImageThumbnailWidget( return Image.file(
state.backgroundPath, File(state.backgroundPath),
(data) => Image.memory( fit: BoxFit.cover,
data, width: query.size.width,
fit: BoxFit.cover, height: query.size.height - query.padding.top,
width: query.size.width,
height: query.size.height - query.padding.top,
),
showSpinner: false,
); );
} }

View File

@ -1,3 +1,4 @@
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:mime/mime.dart'; import 'package:mime/mime.dart';
@ -120,9 +121,8 @@ class SendFilesPage extends StatelessWidget {
if (mime.startsWith('image/')) { if (mime.startsWith('image/')) {
// Render the image // Render the image
return ImageThumbnailWidget( return Image.file(
path, File(path),
Image.memory,
); );
} else if (mime.startsWith('video/')) { } else if (mime.startsWith('video/')) {
// Render the video thumbnail // Render the video thumbnail

View File

@ -11,7 +11,6 @@ import 'package:moxxyv2/ui/widgets/chat/helpers.dart';
import 'package:moxxyv2/ui/widgets/chat/media/base.dart'; import 'package:moxxyv2/ui/widgets/chat/media/base.dart';
import 'package:moxxyv2/ui/widgets/chat/media/file.dart'; import 'package:moxxyv2/ui/widgets/chat/media/file.dart';
import 'package:moxxyv2/ui/widgets/chat/progress.dart'; import 'package:moxxyv2/ui/widgets/chat/progress.dart';
import 'package:moxxyv2/ui/widgets/chat/thumbnail.dart';
import 'package:open_file/open_file.dart'; import 'package:open_file/open_file.dart';
class ImageChatWidget extends StatelessWidget { class ImageChatWidget extends StatelessWidget {
@ -30,10 +29,7 @@ class ImageChatWidget extends StatelessWidget {
Widget _buildUploading() { Widget _buildUploading() {
return MediaBaseChatWidget( return MediaBaseChatWidget(
ImageThumbnailWidget( Image.file(File(message.mediaUrl!)),
message.mediaUrl!,
Image.memory,
),
MessageBubbleBottom(message), MessageBubbleBottom(message),
radius, radius,
extra: ProgressWidget(id: message.id), extra: ProgressWidget(id: message.id),
@ -72,10 +68,7 @@ class ImageChatWidget extends StatelessWidget {
/// The image exists locally /// The image exists locally
Widget _buildImage() { Widget _buildImage() {
return MediaBaseChatWidget( return MediaBaseChatWidget(
ImageThumbnailWidget( Image.file(File(message.mediaUrl!)),
message.mediaUrl!,
Image.memory,
),
MessageBubbleBottom(message), MessageBubbleBottom(message),
radius, radius,
onTap: () { onTap: () {

View File

@ -1,5 +1,5 @@
import 'dart:io';
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart'; import 'package:get_it/get_it.dart';
import 'package:moxxyv2/shared/helpers.dart'; import 'package:moxxyv2/shared/helpers.dart';
@ -85,31 +85,9 @@ Widget buildQuoteMessageWidget(Message message, { void Function()? resetQuote})
height: 48, height: 48,
child: ClipRRect( child: ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(8)), borderRadius: const BorderRadius.all(Radius.circular(8)),
child: FutureBuilder<Uint8List>( child: Image.file(File(message.mediaUrl!)),
future: GetIt.I.get<ThumbnailCacheService>().getImageThumbnail(message.mediaUrl!),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.data != null) {
return Image.memory(
snapshot.data!,
fit: BoxFit.cover,
);
} else {
return const Padding(
padding: EdgeInsets.all(32),
child: Icon(
Icons.error_outline,
size: 32,
),
);
}
} else {
return const CircularProgressIndicator();
}
},
),
), ),
) ),
], ],
), ),
resetQuotedMessage: resetQuote, resetQuotedMessage: resetQuote,

View File

@ -1,7 +1,5 @@
import 'dart:typed_data'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
import 'package:moxxyv2/ui/service/thumbnail.dart';
import 'package:moxxyv2/ui/widgets/chat/shared/base.dart'; import 'package:moxxyv2/ui/widgets/chat/shared/base.dart';
class SharedImageWidget extends StatelessWidget { class SharedImageWidget extends StatelessWidget {
@ -15,32 +13,20 @@ class SharedImageWidget extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SharedMediaContainer( return SharedMediaContainer(
FutureBuilder<Uint8List>( Container(
future: GetIt.I.get<ThumbnailCacheService>().getImageThumbnail(path), decoration: BoxDecoration(
builder: (context, snapshot) { borderRadius: BorderRadius.circular(10),
if (snapshot.connectionState == ConnectionState.done) { border: borderColor != null ? Border.all(
return Container( color: borderColor!,
decoration: BoxDecoration( width: 4,
borderRadius: BorderRadius.circular(10), ) : null,
border: borderColor != null ? Border.all( image: DecorationImage(
color: borderColor!, fit: BoxFit.cover,
width: 4, image: FileImage(File(path)),
) : null, ),
image: DecorationImage( ),
fit: BoxFit.cover, clipBehavior: Clip.hardEdge,
image: MemoryImage(snapshot.data!), child: child,
),
),
clipBehavior: Clip.hardEdge,
child: child,
);
} else {
return const Padding(
padding: EdgeInsets.all(32),
child: CircularProgressIndicator(),
);
}
},
), ),
onTap: onTap, onTap: onTap,
); );