|
|
|
|
@ -51,56 +51,55 @@ class ImageViewerPage extends HookConsumerWidget {
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
body: Center(
|
|
|
|
|
child: Hero(
|
|
|
|
|
tag: heroTag,
|
|
|
|
|
child: CachedNetworkImage(
|
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
|
imageUrl: imageUrl,
|
|
|
|
|
httpHeaders: {"Authorization": "Bearer ${box.get(accessTokenKey)}"},
|
|
|
|
|
fadeInDuration: const Duration(milliseconds: 250),
|
|
|
|
|
errorWidget: (context, url, error) => ConstrainedBox(
|
|
|
|
|
constraints: const BoxConstraints(maxWidth: 300),
|
|
|
|
|
child: Wrap(
|
|
|
|
|
spacing: 32,
|
|
|
|
|
runSpacing: 32,
|
|
|
|
|
alignment: WrapAlignment.center,
|
|
|
|
|
children: [
|
|
|
|
|
const Text(
|
|
|
|
|
"Failed To Render Image - Possibly Corrupted Data",
|
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
|
style: TextStyle(fontSize: 16, color: Colors.white),
|
|
|
|
|
),
|
|
|
|
|
SingleChildScrollView(
|
|
|
|
|
child: Text(
|
|
|
|
|
error.toString(),
|
|
|
|
|
body: SafeArea(
|
|
|
|
|
child: Center(
|
|
|
|
|
child: Hero(
|
|
|
|
|
tag: heroTag,
|
|
|
|
|
child: CachedNetworkImage(
|
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
|
imageUrl: imageUrl,
|
|
|
|
|
httpHeaders: {"Authorization": "Bearer ${box.get(accessTokenKey)}"},
|
|
|
|
|
fadeInDuration: const Duration(milliseconds: 250),
|
|
|
|
|
errorWidget: (context, url, error) => ConstrainedBox(
|
|
|
|
|
constraints: const BoxConstraints(maxWidth: 300),
|
|
|
|
|
child: Wrap(
|
|
|
|
|
spacing: 32,
|
|
|
|
|
runSpacing: 32,
|
|
|
|
|
alignment: WrapAlignment.center,
|
|
|
|
|
children: [
|
|
|
|
|
const Text(
|
|
|
|
|
"Failed To Render Image - Possibly Corrupted Data",
|
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
|
style: TextStyle(fontSize: 12, color: Colors.grey[400]),
|
|
|
|
|
style: TextStyle(fontSize: 16, color: Colors.white),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
SingleChildScrollView(
|
|
|
|
|
child: Text(
|
|
|
|
|
error.toString(),
|
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
|
style: TextStyle(fontSize: 12, color: Colors.grey[400]),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
placeholder: (context, url) {
|
|
|
|
|
return CachedNetworkImage(
|
|
|
|
|
cacheKey: thumbnailUrl,
|
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
|
imageUrl: thumbnailUrl,
|
|
|
|
|
httpHeaders: {"Authorization": "Bearer ${box.get(accessTokenKey)}"},
|
|
|
|
|
placeholderFadeInDuration: const Duration(milliseconds: 0),
|
|
|
|
|
progressIndicatorBuilder: (context, url, downloadProgress) => Transform.scale(
|
|
|
|
|
scale: 0.2,
|
|
|
|
|
child: CircularProgressIndicator(value: downloadProgress.progress),
|
|
|
|
|
),
|
|
|
|
|
errorWidget: (context, url, error) => Icon(
|
|
|
|
|
Icons.error,
|
|
|
|
|
color: Colors.grey[300],
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
// imageBuilder: (context, imageProvider) {
|
|
|
|
|
// return PhotoView(imageProvider: imageProvider);
|
|
|
|
|
// },
|
|
|
|
|
placeholder: (context, url) {
|
|
|
|
|
return CachedNetworkImage(
|
|
|
|
|
cacheKey: thumbnailUrl,
|
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
|
imageUrl: thumbnailUrl,
|
|
|
|
|
httpHeaders: {"Authorization": "Bearer ${box.get(accessTokenKey)}"},
|
|
|
|
|
placeholderFadeInDuration: const Duration(milliseconds: 0),
|
|
|
|
|
progressIndicatorBuilder: (context, url, downloadProgress) => Transform.scale(
|
|
|
|
|
scale: 0.2,
|
|
|
|
|
child: CircularProgressIndicator(value: downloadProgress.progress),
|
|
|
|
|
),
|
|
|
|
|
errorWidget: (context, url, error) => Icon(
|
|
|
|
|
Icons.error,
|
|
|
|
|
color: Colors.grey[300],
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
|