Created InfoItem for locationTags in file details

This commit is contained in:
ashilkn 2023-03-15 16:17:12 +05:30
parent 47a3221484
commit 23f878b962
2 changed files with 61 additions and 0 deletions

View file

@ -16,6 +16,7 @@ import 'package:photos/ui/viewer/file_details/backed_up_time_item_widget.dart';
import "package:photos/ui/viewer/file_details/creation_time_item_widget.dart";
import 'package:photos/ui/viewer/file_details/exif_item_widgets.dart';
import "package:photos/ui/viewer/file_details/file_properties_item_widget.dart";
import "package:photos/ui/viewer/file_details/location_tags_widget.dart";
import "package:photos/ui/viewer/file_details/objects_item_widget.dart";
import "package:photos/utils/exif_util.dart";
@ -125,6 +126,12 @@ class _FileDetailsWidgetState extends State<FileDetailsWidget> {
},
),
);
if (FeatureFlagService.instance.isInternalUserOrDebugBuild()) {
fileDetailsTiles.addAll([
LocationTagsWidget(widget.file),
const FileDetailsDivider(),
]);
}
if (_isImage) {
fileDetailsTiles.addAll([
ValueListenableBuilder(

View file

@ -0,0 +1,54 @@
import "dart:async";
import "package:flutter/material.dart";
import "package:photos/models/file.dart";
import "package:photos/services/location_service.dart";
import "package:photos/ui/components/buttons/chip_button_widget.dart";
import "package:photos/ui/components/buttons/inline_button_widget.dart";
import "package:photos/ui/components/info_item_widget.dart";
class LocationTagsWidget extends StatefulWidget {
final File file;
const LocationTagsWidget(this.file, {super.key});
@override
State<LocationTagsWidget> createState() => _LocationTagsWidgetState();
}
class _LocationTagsWidgetState extends State<LocationTagsWidget> {
String title = "Add location";
IconData leadingIcon = Icons.add_location_alt_outlined;
bool hasChipButtons = false;
late final Future<List<Widget>> locationTagChips;
@override
void initState() {
locationTagChips = _getLocationTags();
super.initState();
}
@override
Widget build(BuildContext context) {
return InfoItemWidget(
leadingIcon: Icons.add_location_alt_outlined,
title: "Add location",
subtitleSection: locationTagChips,
hasChipButtons: hasChipButtons,
);
}
Future<List<Widget>> _getLocationTags() async {
final locationTags =
LocationService.instance.getLocationsByFileID(widget.file.generatedID!);
if (locationTags.isEmpty) {
return [
InlineButtonWidget("Group nearby photos", () {}),
];
}
setState(() {
title = "Location";
leadingIcon = Icons.pin_drop_outlined;
hasChipButtons = true;
});
return locationTags.map((e) => ChipButtonWidget(e)).toList();
}
}