연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.
GifView
Load GIF |APNG images and can set framerate
Features
With GifView you can load GIF images of easy way and can configure frameRate.
Load from Assets;
Load from Network;
Load from Memory;
Set frame rate;
Set progress while loading GIF
Getting started
Add gif_view as a dependency in your pubspec.yaml file .
Usage
GIF from Asset
GifView .asset (
'assets/gif1.gif' ,
height: 200 ,
width: 200 ,
frameRate: 30 ,
)
GIF from Network
GifView .network (
'https://www.showmetech.com.br/wp-content/uploads/2015/09/happy-minion-gif.gif' ,
height: 200 ,
width: 200 ,
)
GIF from Memory
GifView .memory (
_bytes,
height: 200 ,
width: 200 ,
)
Atributes
Name
Description
Default
controller
-
-
frameRate
-
-
height
-
-
width
-
-
fit
-
-
color
-
-
colorBlendMode
-
-
alignment
-
Alignment.center
imageRepeat
-
ImageRepeat.noRepeat
centerSlice
-
-
matchTextDirection
-
false
invertColors
-
false
filterQuality
-
FilterQuality.low
isAntiAlias
-
false
onFinish
-
-
onStart
-
-
onFrame
-
-
onLoaded
-
-
loop
-
-
playInverted
-
-
errorBuilder
You can return a widget to show when happen error
-
progressBuilder
You can return a widget to show while loading
-
scale
-
1.0
headers
-
-
Controller
GifController controller = GifController ();
controller.play ({bool? inverted, int? initialFrame});
controller.pause ();
controller.stop ();
controller.seek (34 );
GifStatus status = controller.status;
Controller use simple example
class MyPage extends StatelessWidget {
final controller = GifController ();
MyPage ({Key ? key}) : super (key: key);
@override
Widget build (BuildContext context) {
return Scaffold (
body: GifView .network (
'https://www.showmetech.com.br/wp-content/uploads/2015/09/happy-minion-gif.gif' ,
controller: controller,
),
floatingActionButton: FloatingActionButton (
onPressed: () {
if (controller.status == GifStatus .playing) {
controller.pause ();
} else {
controller.play ();
}
},
),
);
}
}
Cache Management
Pre-fetching Images
GifView provides a static preFetch method to load and cache GIF images ahead of time for better performance:
await GifView .preFetch (AssetImage ('my/path/item.gif' ));
await GifView .preFetch (NetworkImage ('http://my/path/item.gif' ));
await GifView .preFetch (MemoryImage (Uint8List ()));
await GifView .preFetch (FileImage (File ()));
Custom Cache Provider
You can implement your own caching strategy by setting a custom cache provider:
class MyCustomCacheProvider implements GifCacheProvider {
@override
Future <void > add (String key, Uint8List bytes) async {
}
@override
Future <Uint8List ?> get (String key) async {
}
@override
Future <void > clear () async {
}
}
GifView .setCacheProvider (MyCustomCacheProvider ());
GifView .setCacheProvider (null );