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/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(
|
||||
|
|
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