refactored code
This commit is contained in:
parent
a85f2229a7
commit
18dfbcdb61
79
lib/ui/viewer/file/collections_list_of_file_widget.dart
Normal file
79
lib/ui/viewer/file/collections_list_of_file_widget.dart
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:logging/logging.dart';
|
||||||
|
import 'package:photos/ente_theme_data.dart';
|
||||||
|
import 'package:photos/models/collection_items.dart';
|
||||||
|
import 'package:photos/services/collections_service.dart';
|
||||||
|
import 'package:photos/ui/common/loading_widget.dart';
|
||||||
|
import 'package:photos/ui/viewer/gallery/collection_page.dart';
|
||||||
|
import 'package:photos/utils/navigation_util.dart';
|
||||||
|
|
||||||
|
class CollectionsListOfFile extends StatelessWidget {
|
||||||
|
final Future<Set<int>> allCollectionIDsOfFile;
|
||||||
|
const CollectionsListOfFile(this.allCollectionIDsOfFile, {Key key})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return FutureBuilder(
|
||||||
|
future: allCollectionIDsOfFile,
|
||||||
|
builder: (context, snapshot) {
|
||||||
|
if (snapshot.hasData) {
|
||||||
|
final Set<int> collectionIDs = snapshot.data;
|
||||||
|
final collections = [];
|
||||||
|
for (var collectionID in collectionIDs) {
|
||||||
|
collections.add(
|
||||||
|
CollectionsService.instance.getCollectionByID(collectionID),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return ListView.builder(
|
||||||
|
itemCount: collections.length,
|
||||||
|
scrollDirection: Axis.horizontal,
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
return GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
routeToPage(
|
||||||
|
context,
|
||||||
|
CollectionPage(
|
||||||
|
CollectionWithThumbnail(collections[index], null),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
margin: const EdgeInsets.only(
|
||||||
|
top: 10,
|
||||||
|
bottom: 18,
|
||||||
|
right: 8,
|
||||||
|
),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Theme.of(context)
|
||||||
|
.colorScheme
|
||||||
|
.inverseBackgroundColor
|
||||||
|
.withOpacity(0.025),
|
||||||
|
borderRadius: const BorderRadius.all(
|
||||||
|
Radius.circular(8),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Center(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 8),
|
||||||
|
child: Text(
|
||||||
|
collections[index].name,
|
||||||
|
style: Theme.of(context).textTheme.subtitle2,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
} else if (snapshot.hasError) {
|
||||||
|
Logger("CollectionsListOfFile").info(snapshot.error);
|
||||||
|
return const SizedBox.shrink();
|
||||||
|
} else {
|
||||||
|
return const EnteLoadingWidget();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,19 +5,15 @@ import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
|
||||||
import "package:photos/core/configuration.dart";
|
import "package:photos/core/configuration.dart";
|
||||||
import 'package:photos/db/files_db.dart';
|
import 'package:photos/db/files_db.dart';
|
||||||
import "package:photos/ente_theme_data.dart";
|
import "package:photos/ente_theme_data.dart";
|
||||||
import 'package:photos/models/collection_items.dart';
|
|
||||||
import "package:photos/models/file.dart";
|
import "package:photos/models/file.dart";
|
||||||
import "package:photos/models/file_type.dart";
|
import "package:photos/models/file_type.dart";
|
||||||
import 'package:photos/services/collections_service.dart';
|
|
||||||
import 'package:photos/ui/common/DividerWithPadding.dart';
|
import 'package:photos/ui/common/DividerWithPadding.dart';
|
||||||
import 'package:photos/ui/common/loading_widget.dart';
|
import 'package:photos/ui/viewer/file/collections_list_of_file_widget.dart';
|
||||||
import 'package:photos/ui/viewer/file/raw_exif_button.dart';
|
import 'package:photos/ui/viewer/file/raw_exif_button.dart';
|
||||||
import 'package:photos/ui/viewer/gallery/collection_page.dart';
|
|
||||||
import "package:photos/utils/date_time_util.dart";
|
import "package:photos/utils/date_time_util.dart";
|
||||||
import "package:photos/utils/exif_util.dart";
|
import "package:photos/utils/exif_util.dart";
|
||||||
import "package:photos/utils/file_util.dart";
|
import "package:photos/utils/file_util.dart";
|
||||||
import "package:photos/utils/magic_util.dart";
|
import "package:photos/utils/magic_util.dart";
|
||||||
import 'package:photos/utils/navigation_util.dart';
|
|
||||||
|
|
||||||
class FileInfoWidget extends StatefulWidget {
|
class FileInfoWidget extends StatefulWidget {
|
||||||
final File file;
|
final File file;
|
||||||
|
@ -210,68 +206,7 @@ class _FileInfoWidgetState extends State<FileInfoWidget> {
|
||||||
padding: EdgeInsets.only(left: 6),
|
padding: EdgeInsets.only(left: 6),
|
||||||
child: Icon(Icons.folder_outlined),
|
child: Icon(Icons.folder_outlined),
|
||||||
),
|
),
|
||||||
title: FutureBuilder(
|
title: CollectionsListOfFile(allCollectionIDsOfFile),
|
||||||
future: allCollectionIDsOfFile,
|
|
||||||
builder: (context, snapshot) {
|
|
||||||
if (snapshot.hasData) {
|
|
||||||
final Set<int> collectionIDs = snapshot.data;
|
|
||||||
final collections = [];
|
|
||||||
for (var collectionID in collectionIDs) {
|
|
||||||
collections.add(
|
|
||||||
CollectionsService.instance.getCollectionByID(collectionID),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return ListView.builder(
|
|
||||||
itemCount: collections.length,
|
|
||||||
scrollDirection: Axis.horizontal,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
return GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
if (file.collectionID != null) {
|
|
||||||
routeToPage(
|
|
||||||
context,
|
|
||||||
CollectionPage(
|
|
||||||
CollectionWithThumbnail(collections[index], null),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
margin: const EdgeInsets.only(
|
|
||||||
top: 10,
|
|
||||||
bottom: 18,
|
|
||||||
right: 8,
|
|
||||||
),
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Theme.of(context)
|
|
||||||
.colorScheme
|
|
||||||
.inverseBackgroundColor
|
|
||||||
.withOpacity(0.08),
|
|
||||||
borderRadius: const BorderRadius.all(
|
|
||||||
Radius.circular(8),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
child: Center(
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 8),
|
|
||||||
child: Text(
|
|
||||||
collections[index].name,
|
|
||||||
style: Theme.of(context).textTheme.subtitle2,
|
|
||||||
overflow: TextOverflow.ellipsis,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
} else if (snapshot.hasError) {
|
|
||||||
return const Text("Oops, Something went wrong.");
|
|
||||||
} else {
|
|
||||||
return const EnteLoadingWidget();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const DividerWithPadding(left: 70, right: 20),
|
const DividerWithPadding(left: 70, right: 20),
|
||||||
|
|
Loading…
Reference in a new issue