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/ios/Flutter/.last_build_id b/ios/Flutter/.last_build_id new file mode 100644 index 00000000..7b860a07 --- /dev/null +++ b/ios/Flutter/.last_build_id @@ -0,0 +1 @@ +8bbc713f808a1e4202d48e35ddf46f23 \ No newline at end of file diff --git a/lib/pages/landing/home_page.dart b/lib/pages/landing/home_page.dart index 2744d3a6..149e5cc2 100644 --- a/lib/pages/landing/home_page.dart +++ b/lib/pages/landing/home_page.dart @@ -12,6 +12,7 @@ import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; import 'package:diplomaticquarterapp/pages/paymentService/payment_service.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; @@ -143,7 +144,9 @@ class _HomePageState extends State { new Color( 0xFFbcc2c4), onPressed: () { - navigateToCovidDriveThru(); + //TODO remove it when all the loader cases ended This is just an example + // GifLoaderDialogUtils.showMyDialog(context); + navigateToCovidDriveThru(); }, child: Text( "BOOK NOW", diff --git a/lib/uitl/gif_loader_dialog_utils.dart b/lib/uitl/gif_loader_dialog_utils.dart new file mode 100644 index 00000000..52e24739 --- /dev/null +++ b/lib/uitl/gif_loader_dialog_utils.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; + +import '../widgets/Loader/gif_loader_container.dart'; + +class GifLoaderDialogUtils { + static AlertDialog dialog = AlertDialog( + backgroundColor: Colors.transparent, + content: GifLoaderContainer(), + ); + + static showMyDialog(BuildContext context) { + showDialog(context: context, child: dialog); + } + + static hideDialog(BuildContext context) { + Navigator.of(context).pop(); + } +} diff --git a/lib/widgets/Loader/gif_loader_container.dart b/lib/widgets/Loader/gif_loader_container.dart new file mode 100644 index 00000000..6fb031a3 --- /dev/null +++ b/lib/widgets/Loader/gif_loader_container.dart @@ -0,0 +1,43 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter_gifimage/flutter_gifimage.dart'; + +class GifLoaderContainer extends StatefulWidget { + @override + _GifLoaderContainerState createState() => _GifLoaderContainerState(); +} + +class _GifLoaderContainerState 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 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"), + ), + )); + } +} \ No newline at end of file diff --git a/lib/widgets/others/network_base_view.dart b/lib/widgets/others/network_base_view.dart index 78c47783..5e297d18 100644 --- a/lib/widgets/others/network_base_view.dart +++ b/lib/widgets/others/network_base_view.dart @@ -1,15 +1,32 @@ import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; +import 'package:diplomaticquarterapp/widgets/Loader/gif_loader_container.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{ + + @override + void initState() { + super.initState(); + } + @override + void dispose() { + super.dispose(); + } + @override Widget build(BuildContext context) { return Container( @@ -18,22 +35,34 @@ 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), + ), + GifLoaderContainer() + ], + ); break; case ViewState.Error: return Center( child: AppEmbeddedError( - error: baseViewModel.error, + error: widget.baseViewModel.error, ), ); break; } } + } + + +