Skip to content
This repository has been archived by the owner on Jul 6, 2020. It is now read-only.

Commit

Permalink
add longPressForceRefresh in TranstionToImage, fix #130
Browse files Browse the repository at this point in the history
  • Loading branch information
mchome committed Dec 7, 2019
1 parent a864a2d commit d88f236
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions lib/src/transition/transition_to_image.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ import 'dart:typed_data';

import 'package:flutter/material.dart';

import 'raw_image.dart' show MyRawImage;

import 'package:flutter_advanced_networkimage/provider.dart';
import 'package:flutter_advanced_networkimage/src/utils.dart';

import 'raw_image.dart' show MyRawImage;

typedef Widget LoadingWidgetBuilder(
BuildContext context,
Expand Down Expand Up @@ -42,6 +43,7 @@ class TransitionToImage extends StatefulWidget {
this.loadingWidget = const Center(child: const CircularProgressIndicator()),
this.loadingWidgetBuilder,
this.enableRefresh: false,
this.longPressForceRefresh: false,
this.disableMemoryCache: false,
this.disableMemoryCacheIfFailed: false,
this.loadedCallback,
Expand All @@ -60,6 +62,7 @@ class TransitionToImage extends StatefulWidget {
assert(transitionType != null),
assert(loadingWidget != null),
assert(enableRefresh != null),
assert(longPressForceRefresh != null),
assert(disableMemoryCache != null),
assert(disableMemoryCacheIfFailed != null),
assert(forceRebuildWidget != null),
Expand Down Expand Up @@ -195,9 +198,12 @@ class TransitionToImage extends StatefulWidget {
/// when the target [image] is loading.
final LoadingWidgetBuilder loadingWidgetBuilder;

/// Enable an internal [GestureDetector] for manually refreshing.
/// Enable manually refreshing for network issues.
final bool enableRefresh;

/// force long press to refetch image.
final bool longPressForceRefresh;

/// If set to enable, the image provider will be evicted from [ImageCache].
final bool disableMemoryCache;

Expand Down Expand Up @@ -338,6 +344,14 @@ class _TransitionToImageState extends State<TransitionToImage>
if (widget.printError) print('Reloading image.');

_imageProvider.evict();
if (widget.longPressForceRefresh &&
_imageProvider is AdvancedNetworkImage) {
removeFromCache(
uid((_imageProvider as AdvancedNetworkImage).url),
useCacheRule:
(_imageProvider as AdvancedNetworkImage).cacheRule == null,
);
}
}

final ImageStream oldImageStream = _imageStream;
Expand Down Expand Up @@ -444,7 +458,7 @@ class _TransitionToImageState extends State<TransitionToImage>
}

MyRawImage buildRawImage() {
return MyRawImage(
MyRawImage image = MyRawImage(
image: _imageInfo?.image,
width: widget.width,
height: widget.height,
Expand All @@ -458,5 +472,12 @@ class _TransitionToImageState extends State<TransitionToImage>
invertColors: widget.invertColors,
imageFilter: widget.imageFilter,
);

return widget.longPressForceRefresh
? GestureDetector(
onLongPress: () => _getImage(reload: true),
child: image,
)
: image;
}
}

0 comments on commit d88f236

Please sign in to comment.