You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.4 KiB
Dart
54 lines
1.4 KiB
Dart
import 'package:flutter/cupertino.dart';
|
|
import 'package:gif_view/gif_view.dart';
|
|
|
|
class GifLoaderContainer extends StatefulWidget {
|
|
bool barrierDismissible;
|
|
|
|
GifLoaderContainer({this.barrierDismissible = true});
|
|
|
|
@override
|
|
_GifLoaderContainerState createState() => _GifLoaderContainerState();
|
|
}
|
|
|
|
class _GifLoaderContainerState extends State<GifLoaderContainer> with TickerProviderStateMixin {
|
|
late GifController controller;
|
|
|
|
@override
|
|
void initState() {
|
|
controller = GifController();
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
try {
|
|
controller = GifController(autoPlay: true, onFinish: () {}, loop: true);
|
|
// controller.repeat(min: 0, max: 11, period: Duration(milliseconds: 750), reverse: true);
|
|
} catch (ex) {}
|
|
});
|
|
super.initState();
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
controller.dispose();
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return WillPopScope(
|
|
onWillPop: () async {
|
|
return widget.barrierDismissible;
|
|
},
|
|
child: Center(
|
|
//progress-loading.gif
|
|
child: Container(
|
|
// margin: EdgeInsets.only(bottom: 40),
|
|
child: GifView(
|
|
controller: controller,
|
|
image: AssetImage("assets/images/progress-loading-red.gif"), //NetworkImage("http://img.mp.itc.cn/upload/20161107/5cad975eee9e4b45ae9d3c1238ccf91e.jpg"),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|