Native image, video rendering

This commit is contained in:
2025-04-22 01:12:56 +08:00
parent be08c7c806
commit 8bb365c974
26 changed files with 1047 additions and 17 deletions

View File

@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:island/models/file.dart';
import 'package:island/pods/config.dart';
import 'image.dart';
import 'video.dart';
class CloudFileWidget extends ConsumerWidget {
final SnCloudFile item;
const CloudFileWidget({super.key, required this.item});
@override
Widget build(BuildContext context, WidgetRef ref) {
final serverUrl = ref.watch(serverUrlProvider);
final uri = '$serverUrl/files/${item.id}';
switch (item.mimeType?.split('/').firstOrNull) {
case "image":
return AspectRatio(
aspectRatio: (item.fileMeta?['ratio'] ?? 1).toDouble(),
child: UniversalImage(uri: uri, blurHash: item.fileMeta?['blur']),
);
case "video":
return AspectRatio(
aspectRatio: (item.fileMeta?['ratio'] ?? 16 / 9).toDouble(),
child: UniversalVideo(uri: uri),
);
default:
return Placeholder();
}
}
}