Remove flutter chat #26
3 changed files with 61 additions and 2 deletions
Add file card
commit
2344ed887d
22
lib/helpers/extensions/size_to_string.dart
Normal file
22
lib/helpers/extensions/size_to_string.dart
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
||||
|
||||
extension SizeToString on int {
|
||||
String get sizeAsString {
|
||||
const IListConst<String> suffixes = IListConst([
|
||||
"B",
|
||||
"KB",
|
||||
"MB",
|
||||
"GB",
|
||||
"TB",
|
||||
"PB",
|
||||
]);
|
||||
|
||||
var i = 0;
|
||||
var size = toDouble();
|
||||
while (size > 1024 && i < suffixes.length - 1) {
|
||||
size /= 1024;
|
||||
i++;
|
||||
}
|
||||
return "${size.toStringAsFixed(2)} ${suffixes[i]}";
|
||||
}
|
||||
}
|
||||
29
lib/widgets/file_card.dart
Normal file
29
lib/widgets/file_card.dart
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
import "package:flutter/material.dart";
|
||||
import "package:nexus/helpers/extensions/size_to_string.dart";
|
||||
import "package:nexus/models/info/file.dart";
|
||||
|
||||
class FileCard extends StatelessWidget {
|
||||
final Uri uri;
|
||||
final FileInfo? info;
|
||||
final String? filename;
|
||||
const FileCard(this.uri, this.info, {this.filename, super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) => SizedBox(
|
||||
width: 320,
|
||||
child: Card(
|
||||
color: Theme.of(context).colorScheme.surfaceContainer,
|
||||
child: ListTile(
|
||||
leading: Icon(Icons.file_copy),
|
||||
title: Text(
|
||||
filename ?? "file",
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
subtitle: info?.size == null ? null : Text(info!.size!.sizeAsString),
|
||||
// TODO: Downloading files
|
||||
trailing: IconButton(onPressed: null, icon: Icon(Icons.download)),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
@ -26,6 +26,7 @@ import "package:nexus/widgets/loading.dart";
|
|||
import "package:nexus/widgets/players/video.dart";
|
||||
import "package:nexus/widgets/players/audio.dart";
|
||||
import "package:nexus/widgets/renderers/membership.dart";
|
||||
import "package:nexus/widgets/file_card.dart";
|
||||
import "package:timeago/timeago.dart";
|
||||
import "package:flutter_linkify/flutter_linkify.dart";
|
||||
|
||||
|
|
@ -238,8 +239,15 @@ class EventRenderer extends ConsumerWidget {
|
|||
:final info,
|
||||
) =>
|
||||
AudioPlayer(url, info),
|
||||
// FileMessageContent(:final info) =>
|
||||
// FileRenderer(url, info),
|
||||
FileMessageContent(
|
||||
:final info,
|
||||
:final filename,
|
||||
) =>
|
||||
FileCard(
|
||||
url,
|
||||
info,
|
||||
filename: filename,
|
||||
),
|
||||
ImageMessageContent(:final info) => ExpandableImage(
|
||||
url.toString(),
|
||||
child: ClipRRect(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue