ente/mobile/lib/ui/viewer/file_details/objects_item_widget.dart

67 lines
1.8 KiB
Dart
Raw Normal View History

import "package:flutter/foundation.dart";
import "package:flutter/material.dart";
import "package:logging/logging.dart";
import "package:photos/generated/l10n.dart";
import 'package:photos/models/file/file.dart';
import "package:photos/ui/components/buttons/chip_button_widget.dart";
import "package:photos/ui/components/info_item_widget.dart";
class ObjectsItemWidget extends StatelessWidget {
final EnteFile file;
const ObjectsItemWidget(this.file, {super.key});
@override
Widget build(BuildContext context) {
return InfoItemWidget(
key: const ValueKey("Objects"),
leadingIcon: Icons.image_search_outlined,
subtitleSection: _objectTags(context, file),
hasChipButtons: true,
);
}
Future<List<ChipButtonWidget>> _objectTags(
BuildContext context,
EnteFile file,
) async {
try {
final chipButtons = <ChipButtonWidget>[];
var objectTags = <String, double>{};
// final thumbnail = await getThumbnail(file);
// if (thumbnail != null) {
// objectTags = await ObjectDetectionService.instance.predict(thumbnail);
// }
if (objectTags.isEmpty) {
return [
ChipButtonWidget(
S.of(context).noResults,
noChips: true,
),
];
}
// sort by values
objectTags = Map.fromEntries(
objectTags.entries.toList()
..sort((e1, e2) => e2.value.compareTo(e1.value)),
);
for (MapEntry<String, double> entry in objectTags.entries) {
chipButtons.add(
ChipButtonWidget(
entry.key +
(kDebugMode
? "-" + (entry.value * 100).round().toString()
: ""),
),
);
}
return chipButtons;
} catch (e, s) {
Logger("ObjctsItemWidget").info(e, s);
return [];
}
}
}