image caching test

This commit is contained in:
MohammadTaha Basiri 2022-02-09 14:08:44 +03:30
parent 627e6ee2df
commit 66094b4dc2
3 changed files with 44 additions and 31 deletions

View File

@ -8,6 +8,7 @@ import 'package:didvan/services/network/request.dart';
import 'package:didvan/services/network/request_helper.dart'; import 'package:didvan/services/network/request_helper.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:transparent_image/transparent_image.dart';
class SkeletonImage extends StatefulWidget { class SkeletonImage extends StatefulWidget {
final String imageUrl; final String imageUrl;
@ -29,45 +30,49 @@ class SkeletonImage extends StatefulWidget {
} }
class _SkeletonImageState extends State<SkeletonImage> { class _SkeletonImageState extends State<SkeletonImage> {
late Uint8List _bytes; // late Uint8List _bytes;
bool _isLoading = true; // bool _isLoading = true;
@override // @override
void initState() { // void initState() {
if (kIsWeb) _getImage(); // if (kIsWeb) _getImage();
super.initState(); // super.initState();
} // }
Future<void> _getImage() async { // Future<void> _getImage() async {
final url = RequestHelper.baseUrl + widget.imageUrl; // final url = RequestHelper.baseUrl + widget.imageUrl;
_bytes = (await http.get( // _bytes = (await http.get(
Uri.parse(url), // Uri.parse(url),
headers: {'Authorization': 'Bearer ${RequestService.token}'}, // headers: {'Authorization': 'Bearer ${RequestService.token}'},
)) // ))
.bodyBytes; // .bodyBytes;
if (mounted) { // if (mounted) {
setState(() { // setState(() {
_isLoading = false; // _isLoading = false;
}); // });
} // }
} // }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (kIsWeb) { if (kIsWeb) {
if (_isLoading) { // if (_isLoading) {
return _aspectRatioGenerator( // return _aspectRatioGenerator(
child: ShimmerPlaceholder( // child: ShimmerPlaceholder(
borderRadius: widget.borderRadius, // borderRadius: widget.borderRadius,
width: widget.aspectRatio == null ? widget.width : null, // width: widget.aspectRatio == null ? widget.width : null,
height: widget.aspectRatio == null ? widget.height : null, // height: widget.aspectRatio == null ? widget.height : null,
), // ),
); // );
} // }
return _aspectRatioGenerator( return _aspectRatioGenerator(
child: ClipRRect( child: ClipRRect(
borderRadius: widget.borderRadius, borderRadius: widget.borderRadius,
child: Image.memory( child: FadeInImage(
_bytes, image: NetworkImage(
RequestHelper.baseUrl + widget.imageUrl,
headers: {'Authorization': 'Bearer ${RequestService.token}'},
),
placeholder: MemoryImage(kTransparentImage),
fit: BoxFit.cover, fit: BoxFit.cover,
width: widget.width, width: widget.width,
height: widget.height, height: widget.height,

View File

@ -649,6 +649,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.4.3" version: "0.4.3"
transparent_image:
dependency: "direct main"
description:
name: transparent_image
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:

View File

@ -60,6 +60,7 @@ dependencies:
flutter_html: ^3.0.0-alpha.2 flutter_html: ^3.0.0-alpha.2
crop: ^0.5.2 crop: ^0.5.2
url_launcher: ^6.0.18 url_launcher: ^6.0.18
transparent_image: ^2.0.0
dev_dependencies: dev_dependencies: