Attachment rendering

This commit is contained in:
2025-04-23 00:07:20 +08:00
parent 8bb365c974
commit 36905e0cd5
18 changed files with 519 additions and 113 deletions

View File

@ -1,33 +1,26 @@
import 'dart:io';
import 'package:flutter/services.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_blurhash/flutter_blurhash.dart';
class UniversalImage extends StatelessWidget {
final String uri;
final String? blurHash;
const UniversalImage({super.key, required this.uri, this.blurHash});
final BoxFit fit;
const UniversalImage({
super.key,
required this.uri,
this.blurHash,
this.fit = BoxFit.cover,
});
@override
Widget build(BuildContext context) {
final params = {'src': uri, 'blur': blurHash};
if (Platform.isAndroid) {
return AndroidView(
viewType: 'native-image',
layoutDirection: TextDirection.ltr,
creationParams: params,
creationParamsCodec: const StandardMessageCodec(),
);
}
if (Platform.isIOS) {
// For iOS: Use UiKitView to embed a native iOS image view
return UiKitView(
viewType: 'native-image',
layoutDirection: TextDirection.ltr,
creationParams: params,
creationParamsCodec: const StandardMessageCodec(),
);
}
return Image.network(uri);
return Stack(
fit: StackFit.expand,
children: [
if (blurHash != null) BlurHash(hash: blurHash!),
CachedNetworkImage(imageUrl: uri, fit: fit),
],
);
}
}