From cee1298b62284425ad77d61c837be98fca17e1cc Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Tue, 12 May 2026 20:08:55 -0400 Subject: [PATCH] add back custom blurhashing --- .../chat_page/expandable_image_message.dart | 48 ++++++++++++------- pubspec.lock | 8 ++++ pubspec.yaml | 1 + 3 files changed, 40 insertions(+), 17 deletions(-) diff --git a/lib/widgets/chat_page/expandable_image_message.dart b/lib/widgets/chat_page/expandable_image_message.dart index ca7f266..5bc2c20 100644 --- a/lib/widgets/chat_page/expandable_image_message.dart +++ b/lib/widgets/chat_page/expandable_image_message.dart @@ -1,34 +1,48 @@ import "package:cross_cache/cross_cache.dart"; import "package:flutter/material.dart"; +import "package:flutter_blurhash/flutter_blurhash.dart"; import "package:flutter_riverpod/flutter_riverpod.dart"; -import "package:flyer_chat_image_message/flyer_chat_image_message.dart"; import "package:nexus/controllers/cross_cache_controller.dart"; import "package:nexus/helpers/extensions/get_headers.dart"; import "package:nexus/widgets/chat_page/expandable_image.dart"; +import "package:nexus/widgets/loading.dart"; class ExpandableImageMessage extends ConsumerWidget { - final ImageMessage message; - final int index; + final String url; + final double? width; + final double? height; + final String? blurHash; - const ExpandableImageMessage(this.message, {required this.index, super.key}); + const ExpandableImageMessage( + this.url, { + this.width, + this.height, + this.blurHash, + super.key, + }); @override Widget build(BuildContext context, WidgetRef ref) => ExpandableImage( - message.source, - child: FlyerChatImageMessage( - customImageProvider: CachedNetworkImage( - message.source, - ref.watch(CrossCacheController.provider), - headers: ref.headers, - ), - errorBuilder: (context, error, stackTrace) => Center( - child: Text( - "Image Failed to Load", - style: TextStyle(color: Theme.of(context).colorScheme.error), + url, + child: ClipRRect( + borderRadius: BorderRadius.all(Radius.circular(8)), + child: Image( + image: CachedNetworkImage( + url, + ref.watch(CrossCacheController.provider), + headers: ref.headers, + ), + width: width, + height: height, + loadingBuilder: (context, child, loadingProgress) => + blurHash == null ? Loading() : BlurHash(hash: blurHash!), + errorBuilder: (context, error, stackTrace) => Center( + child: Text( + "Image Failed to Load", + style: TextStyle(color: Theme.of(context).colorScheme.error), + ), ), ), - message: message, - index: index, ), ); } diff --git a/pubspec.lock b/pubspec.lock index cfd8fcc..10f28bd 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -392,6 +392,14 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_blurhash: + dependency: "direct main" + description: + name: flutter_blurhash + sha256: e97b9aff13b9930bbaa74d0d899fec76e3f320aba3190322dcc5d32104e3d25d + url: "https://pub.dev" + source: hosted + version: "0.9.1" flutter_hooks: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index a174c51..4e8d609 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -51,6 +51,7 @@ dependencies: emoji_text_field: git: url: https://github.com/Henry-Hiles/emoji_text_field + flutter_blurhash: ^0.9.1 dev_dependencies: build_runner: 2.15.0