Maintain separate durations for deferring disk and server loads

This commit is contained in:
Vishnu Mohandas 2021-04-26 13:15:00 +05:30
parent cf9a19246c
commit 5bfd6f47a7
2 changed files with 12 additions and 8 deletions

View file

@ -108,7 +108,8 @@ class _LazyLoadingGalleryState extends State<LazyLoadingGallery> {
}
class LazyLoadingGridView extends StatefulWidget {
static const kThumbnailLoadDeferDuration = Duration(milliseconds: 100);
static const kThumbnailDiskLoadDeferDuration = Duration(milliseconds: 40);
static const kThumbnailServerLoadDeferDuration = Duration(milliseconds: 100);
final String tag;
final List<File> files;
final Future<List<File>> Function(int creationStartTime, int creationEndTime,
@ -191,7 +192,8 @@ class _LazyLoadingGridViewState extends State<LazyLoadingGridView> {
tag: widget.tag + file.tag(),
child: ThumbnailWidget(
file,
loadDeferDuration: LazyLoadingGridView.kThumbnailLoadDeferDuration,
diskLoadDeferDuration: LazyLoadingGridView.kThumbnailDiskLoadDeferDuration,
serverLoadDeferDuration: LazyLoadingGridView.kThumbnailServerLoadDeferDuration,
),
),
),

View file

@ -15,14 +15,16 @@ class ThumbnailWidget extends StatefulWidget {
final File file;
final BoxFit fit;
final bool shouldShowSyncStatus;
final Duration loadDeferDuration;
final Duration diskLoadDeferDuration;
final Duration serverLoadDeferDuration;
ThumbnailWidget(
this.file, {
Key key,
this.fit = BoxFit.cover,
this.shouldShowSyncStatus = true,
this.loadDeferDuration,
this.diskLoadDeferDuration,
this.serverLoadDeferDuration,
}) : super(key: key ?? Key(file.generatedID.toString()));
@override
_ThumbnailWidgetState createState() => _ThumbnailWidgetState();
@ -129,8 +131,8 @@ class _ThumbnailWidgetState extends State<ThumbnailWidget> {
_imageProvider = Image.memory(cachedSmallThumbnail).image;
_hasLoadedThumbnail = true;
} else {
if (widget.loadDeferDuration != null) {
Future.delayed(widget.loadDeferDuration, () {
if (widget.diskLoadDeferDuration != null) {
Future.delayed(widget.diskLoadDeferDuration, () {
if (mounted) {
_getThumbnailFromDisk();
}
@ -192,8 +194,8 @@ class _ThumbnailWidgetState extends State<ThumbnailWidget> {
_hasLoadedThumbnail = true;
return;
}
if (widget.loadDeferDuration != null) {
Future.delayed(widget.loadDeferDuration, () {
if (widget.serverLoadDeferDuration != null) {
Future.delayed(widget.serverLoadDeferDuration, () {
if (mounted) {
_getThumbnailFromServer();
}