diff --git a/lib/providers/project_provider.dart b/lib/providers/project_provider.dart index 27dced84..3fe2d0f9 100644 --- a/lib/providers/project_provider.dart +++ b/lib/providers/project_provider.dart @@ -1,21 +1,44 @@ +import 'dart:async'; + +import 'package:connectivity/connectivity.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:flutter/cupertino.dart'; -class ProjectProvider with ChangeNotifier{ +class ProjectProvider with ChangeNotifier { DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); Locale _appLocale; String currentLanguage = 'ar'; bool _isArabic = false; + bool isInternetConnection; Locale get appLocal => _appLocale; bool get isArabic => _isArabic; + StreamSubscription subscription; + + ProjectProvider() { + loadSharedPrefLanguage(); - ProjectProvider(){ - loadSharedPrefLanguage (); + subscription = Connectivity() + .onConnectivityChanged + .listen((ConnectivityResult result) { + switch (result) { + case ConnectivityResult.wifi: + isInternetConnection = true; + break; + case ConnectivityResult.mobile: + isInternetConnection = true; + break; + case ConnectivityResult.none: + isInternetConnection = false; + break; + } + notifyListeners(); + }); } + void loadSharedPrefLanguage() async { currentLanguage = await sharedPref.getString(APP_Language); _appLocale = Locale(currentLanguage ?? 'en'); @@ -40,4 +63,9 @@ class ProjectProvider with ChangeNotifier{ notifyListeners(); } -} \ No newline at end of file + @override + void dispose() { + if (subscription != null) subscription.cancel(); + super.dispose(); + } +} diff --git a/lib/widgets/shared/app_scaffold_widget.dart b/lib/widgets/shared/app_scaffold_widget.dart index 9cc6f53c..e273f381 100644 --- a/lib/widgets/shared/app_scaffold_widget.dart +++ b/lib/widgets/shared/app_scaffold_widget.dart @@ -1,9 +1,13 @@ import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/providers/project_provider.dart'; import 'package:doctor_app_flutter/routes.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; import 'package:hexcolor/hexcolor.dart'; +import 'package:provider/provider.dart'; import '../../presentation/doctor_app_icons.dart'; import '../../widgets/shared/app_loader_widget.dart'; +import 'app_texts_widget.dart'; class AppScaffold extends StatelessWidget { String appBarTitle; @@ -11,11 +15,16 @@ class AppScaffold extends StatelessWidget { bool isLoading; bool isShowAppBar; - AppScaffold({this.appBarTitle ='', this.body, this.isLoading = false, this.isShowAppBar = true}); + AppScaffold( + {this.appBarTitle = '', + this.body, + this.isLoading = false, + this.isShowAppBar = true}); @override Widget build(BuildContext context) { AppGlobal.CONTEX = context; + ProjectProvider projectProvider = Provider.of(context); return Scaffold( backgroundColor: Hexcolor('#F5F5F5'), appBar: isShowAppBar @@ -38,12 +47,28 @@ class AppScaffold extends StatelessWidget { IconButton( icon: Icon(DoctorApp.home_icon_active), color: Colors.white, //Colors.black, - onPressed: () => Navigator.pushNamedAndRemoveUntil(context, HOME,(r) => false ), + onPressed: () => Navigator.pushNamedAndRemoveUntil( + context, HOME, (r) => false), ), ], ) : null, - body: Stack(children: [body, buildAppLoaderWidget(isLoading)])); + body: projectProvider.isInternetConnection + ? Stack(children: [body, buildAppLoaderWidget(isLoading)]) + : Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SvgPicture.asset( + "assets/images/undraw_connected_world_wuay.svg", + height: 250, + ), + AppText('No Internet Connection') + ], + ), + )); + ; } Widget buildAppLoaderWidget(bool isloading) {