Cache thumbnails to disk

This commit is contained in:
Vishnu Mohandas 2020-06-23 23:11:27 +05:30
parent 71fd7277b1
commit 90ff5247de
3 changed files with 47 additions and 5 deletions

View file

@ -1,9 +1,11 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:photos/core/cache/thumbnail_cache.dart';
import 'package:photos/models/file.dart';
import 'package:logging/logging.dart';
import 'package:photos/core/constants.dart';
import 'package:photos/models/file_type.dart';
import 'package:photos/ui/loading_widget.dart';
class ThumbnailWidget extends StatefulWidget {
final File photo;
@ -30,11 +32,10 @@ class _ThumbnailWidgetState extends State<ThumbnailWidget> {
@override
Widget build(BuildContext context) {
if (widget.photo.localId == null) {
_loadNetworkImage();
} else {
_loadLocalImage(context);
return _getNetworkImage();
}
_loadLocalImage(context);
if (_imageProvider != null) {
var image = Image(
image: _imageProvider,
@ -89,11 +90,16 @@ class _ThumbnailWidgetState extends State<ThumbnailWidget> {
}
}
void _loadNetworkImage() {
Widget _getNetworkImage() {
final url = widget.photo.previewURL.isNotEmpty
? widget.photo.getThumbnailUrl()
: widget.photo.getRemoteUrl();
_imageProvider = Image.network(url).image;
return CachedNetworkImage(
imageUrl: url,
placeholder: (context, url) => loadWidget,
errorWidget: (context, url, error) => Icon(Icons.error),
fit: BoxFit.cover,
);
}
@override

View file

@ -29,6 +29,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
cached_network_image:
dependency: "direct main"
description:
name: cached_network_image
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.0+1"
characters:
dependency: transitive
description:
@ -162,11 +169,25 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
file:
dependency: transitive
description:
name: file
url: "https://pub.dartlang.org"
source: hosted
version: "5.2.0"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_cache_manager:
dependency: transitive
description:
name: flutter_cache_manager
url: "https://pub.dartlang.org"
source: hosted
version: "1.4.1"
flutter_email_sender:
dependency: "direct main"
description:
@ -401,6 +422,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.5.8"
rxdart:
dependency: transitive
description:
name: rxdart
url: "https://pub.dartlang.org"
source: hosted
version: "0.24.1"
sensors:
dependency: transitive
description:
@ -546,6 +574,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "3.4.1"
uuid:
dependency: transitive
description:
name: uuid
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
vector_math:
dependency: transitive
description:

View file

@ -53,6 +53,7 @@ dependencies:
extended_image: ^0.9.0
video_player: ^0.10.11+1
chewie: ^0.9.10
cached_network_image: ^2.2.0+1
dev_dependencies:
flutter_test: