refactored code

This commit is contained in:
ashilkn 2022-09-06 17:38:43 +05:30
parent a85f2229a7
commit 18dfbcdb61
2 changed files with 81 additions and 67 deletions

View 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();
}
},
);
}
}

View file

@ -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),