diff --git a/assets/images/progress-loading.gif b/assets/images/progress-loading.gif new file mode 100644 index 00000000..0d7769b7 Binary files /dev/null and b/assets/images/progress-loading.gif differ diff --git a/lib/widgets/others/network_base_view.dart b/lib/widgets/others/network_base_view.dart index 78c47783..e1b92618 100644 --- a/lib/widgets/others/network_base_view.dart +++ b/lib/widgets/others/network_base_view.dart @@ -3,13 +3,37 @@ import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; import 'package:diplomaticquarterapp/widgets/errors/app_embedded_error.dart'; import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gifimage/flutter_gifimage.dart'; -class NetworkBaseView extends StatelessWidget { +class NetworkBaseView extends StatefulWidget { final BaseViewModel baseViewModel; final Widget child; NetworkBaseView({Key key, this.baseViewModel, this.child}); + @override + _NetworkBaseViewState createState() => _NetworkBaseViewState(); +} + +class _NetworkBaseViewState extends State with TickerProviderStateMixin{ + GifController controller1; + + @override + void initState() { + controller1 = GifController(vsync: this); + + WidgetsBinding.instance.addPostFrameCallback((_){ + controller1.repeat(min: 0,max: 12,period: Duration(milliseconds: 750),reverse: true); + }); + super.initState(); + } + @override + void dispose() { + controller1.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) { return Container( @@ -18,22 +42,35 @@ class NetworkBaseView extends StatelessWidget { } buildBaseViewWidget() { - switch (baseViewModel.state) { + switch (widget.baseViewModel.state) { case ViewState.ErrorLocal: case ViewState.Idle: case ViewState.BusyLocal: - return child; + return widget.child; break; case ViewState.Busy: - return AppCircularProgressIndicator(); + return Stack(children: [Container( + height: MediaQuery.of(context).size.height, + color: Colors.grey.withOpacity(0.6), + ),Center(//progress-loading.gif + child: Container( + margin: EdgeInsets.only(bottom: 40), + child: GifImage( + controller: controller1, + image: AssetImage("assets/images/progress-loading.gif"),//NetworkImage("http://img.mp.itc.cn/upload/20161107/5cad975eee9e4b45ae9d3c1238ccf91e.jpg"), + ), + ), + )],); break; case ViewState.Error: return Center( child: AppEmbeddedError( - error: baseViewModel.error, + error: widget.baseViewModel.error, ), ); break; } } } + +