filePreview function

Widget filePreview({
  1. Key? key,
  2. required RoomClient room,
  3. required String filename,
  4. required Uri url,
  5. BoxFit fit = BoxFit.cover,
  6. CodePreviewEditorBuilder? codeEditorBuilder,
})

Implementation

Widget filePreview({
  Key? key,
  required RoomClient room,
  required String filename,
  required Uri url,
  BoxFit fit = BoxFit.cover,
  CodePreviewEditorBuilder? codeEditorBuilder,
}) {
  final kind = classifyFile(filename);

  switch (kind) {
    case FileKind.markdown:
      return MarkdownPreview(filename: filename, room: room, key: key);
    case FileKind.thread:
      return Text(url.pathSegments.last);
    case FileKind.lance:
      return const Center(child: Text("File preview not supported"));
    case FileKind.image:
      return ImagePreview(url: url, key: key, fit: fit);
    case FileKind.video:
      return VideoPreview(url: url, key: key, fit: fit);
    case FileKind.audio:
      return AudioPreview(url: url, key: key);
    case FileKind.pdf:
      return PdfPreview(room: room, path: filename, key: key);
    case FileKind.tsv:
      return TsvPreview(filename: filename, room: room, key: key);
    case FileKind.code:
      return CodePreview(room: room, filename: filename, url: url, key: key, editorBuilder: codeEditorBuilder);
    case FileKind.custom:
      final ext = _ext(filename);
      return customViewers[ext]!(key: key, room: room, filename: filename, url: url);
    case FileKind.parquet:
    case FileKind.office:
    case FileKind.unknown:
      return Text(url.pathSegments.last);
  }
}