33 lines
1007 B
Dart
33 lines
1007 B
Dart
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();
|
|
}
|
|
}
|
|
}
|