Created InfoItem for locationTags in file details
This commit is contained in:
parent
47a3221484
commit
23f878b962
|
@ -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/creation_time_item_widget.dart";
|
||||||
import 'package:photos/ui/viewer/file_details/exif_item_widgets.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/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/ui/viewer/file_details/objects_item_widget.dart";
|
||||||
import "package:photos/utils/exif_util.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) {
|
if (_isImage) {
|
||||||
fileDetailsTiles.addAll([
|
fileDetailsTiles.addAll([
|
||||||
ValueListenableBuilder(
|
ValueListenableBuilder(
|
||||||
|
|
54
lib/ui/viewer/file_details/location_tags_widget.dart
Normal file
54
lib/ui/viewer/file_details/location_tags_widget.dart
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue