From cc929ba4a5809082769abb6f840dac819933a025 Mon Sep 17 00:00:00 2001 From: her_username Date: Wed, 6 May 2020 17:06:01 +0300 Subject: [PATCH 1/3] update Localizations --- lib/config/shared_pref_kay.dart | 3 +- lib/main.dart | 38 +++++++++---- ...orReply.dart => request_doctor_reply.dart} | 0 ...estSchedule.dart => request_schedule.dart} | 0 lib/providers/doctor_reply_provider.dart | 2 +- lib/providers/projects_provider.dart | 45 ++++++++++++++- lib/providers/schedule_provider.dart | 3 +- lib/routes.dart | 2 +- lib/screens/dashboard_screen.dart | 9 ++- lib/screens/settings/settings_screen.dart | 57 ++++++++++++++++++- lib/util/translations_delegate_base.dart | 48 ++++++++++++++++ pubspec.lock | 5 ++ pubspec.yaml | 2 + 13 files changed, 192 insertions(+), 22 deletions(-) rename lib/models/{RequestDoctorReply.dart => request_doctor_reply.dart} (100%) rename lib/models/{RequestSchedule.dart => request_schedule.dart} (100%) create mode 100644 lib/util/translations_delegate_base.dart diff --git a/lib/config/shared_pref_kay.dart b/lib/config/shared_pref_kay.dart index 3fe1f22d..75e39bb1 100644 --- a/lib/config/shared_pref_kay.dart +++ b/lib/config/shared_pref_kay.dart @@ -1,3 +1,4 @@ final TOKEN = 'token'; final PROJECT_ID="projectID"; -final SLECTED_PATIENT_TYPE="slectedPatientType"; \ No newline at end of file +final SLECTED_PATIENT_TYPE="slectedPatientType"; +final APP_Language = "Language"; \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index a205b379..cc9900ce 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,6 @@ +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; @@ -24,18 +26,30 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider(create: (context) => AuthProvider()), ChangeNotifierProvider(create: (context) => ProjectsProvider()), ], - child: MaterialApp( - showSemanticsDebugger: false, - title: 'Flutter Demo', - theme: ThemeData( - primarySwatch: Colors.blue, - primaryColor: Hexcolor('#B8382C'), - buttonColor: Hexcolor('#B8382C'), - fontFamily: 'WorkSans', - ), - initialRoute: INIT_ROUTE, - routes: routes, - debugShowCheckedModeBanner: false, + child: Consumer( + builder: (context,projectsProvider,child) => MaterialApp( + showSemanticsDebugger: false, + title: 'Flutter Demo', + locale: projectsProvider.appLocal, + localizationsDelegates: [ + TranslationBaseDelegate(), + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ], + supportedLocales: [ + const Locale('ar', ''), // Arabic + const Locale('en', ''), // English + ], + theme: ThemeData( + primarySwatch: Colors.blue, + primaryColor: Hexcolor('#B8382C'), + buttonColor: Hexcolor('#B8382C'), + fontFamily: 'WorkSans', + ), + initialRoute: INIT_ROUTE, + routes: routes, + debugShowCheckedModeBanner: false, + ) ), ); }); diff --git a/lib/models/RequestDoctorReply.dart b/lib/models/request_doctor_reply.dart similarity index 100% rename from lib/models/RequestDoctorReply.dart rename to lib/models/request_doctor_reply.dart diff --git a/lib/models/RequestSchedule.dart b/lib/models/request_schedule.dart similarity index 100% rename from lib/models/RequestSchedule.dart rename to lib/models/request_schedule.dart diff --git a/lib/providers/doctor_reply_provider.dart b/lib/providers/doctor_reply_provider.dart index 1c977185..b67cba47 100644 --- a/lib/providers/doctor_reply_provider.dart +++ b/lib/providers/doctor_reply_provider.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:doctor_app_flutter/config/config.dart'; -import 'package:doctor_app_flutter/models/RequestDoctorReply.dart'; +import 'package:doctor_app_flutter/models/request_doctor_reply.dart'; import 'package:doctor_app_flutter/models/list_gt_my_pationents_question_model.dart'; import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:flutter/cupertino.dart'; diff --git a/lib/providers/projects_provider.dart b/lib/providers/projects_provider.dart index 62debed6..983b6351 100644 --- a/lib/providers/projects_provider.dart +++ b/lib/providers/projects_provider.dart @@ -1,18 +1,59 @@ import 'dart:convert'; import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; +import 'package:doctor_app_flutter/providers/schedule_provider.dart'; +import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; +import 'package:provider/provider.dart'; import '../interceptor/http_interceptor.dart'; import 'package:flutter/cupertino.dart'; import 'package:http/http.dart'; import 'package:http_interceptor/http_client_with_interceptor.dart'; -const GET_PROJECTS = - BASE_URL+'Lists.svc/REST/GetProjectForDoctorAPP'; +const GET_PROJECTS = BASE_URL + 'Lists.svc/REST/GetProjectForDoctorAPP'; class ProjectsProvider with ChangeNotifier { + DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); + Locale _appLocale; + String currentLanguage = 'ar'; + bool _isArabic = false; + + Locale get appLocal => _appLocale; + + bool get isArabic => _isArabic; + + ProjectsProvider() { + loadSharedPrefLan(); + } + + void loadSharedPrefLan() async { + currentLanguage = await sharedPref.getString(APP_Language); + _appLocale = Locale(currentLanguage ?? 'ar'); + _isArabic = currentLanguage != null + ? currentLanguage == 'ar' ? true : false + : false; + notifyListeners(); + } + + void changeDirection(String lan) { + if (lan != "en" && currentLanguage != lan) { + _appLocale = Locale("ar"); + _isArabic = true; + currentLanguage = 'ar'; + sharedPref.setString(APP_Language, 'ar'); + } else if (lan != "ar" && currentLanguage != lan) { + _appLocale = Locale("en"); + _isArabic = false; + currentLanguage = 'en'; + sharedPref.setString(APP_Language, 'en'); + } + notifyListeners(); + } + Client client = HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]); + Future getProjectsList() async { const url = GET_PROJECTS; var info = { diff --git a/lib/providers/schedule_provider.dart b/lib/providers/schedule_provider.dart index 14bc4571..edd880d2 100644 --- a/lib/providers/schedule_provider.dart +++ b/lib/providers/schedule_provider.dart @@ -8,7 +8,7 @@ import 'package:http_interceptor/http_client_with_interceptor.dart'; import '../interceptor/http_interceptor.dart'; import '../models/list_doctor_working_hours_table_model.dart'; -import '../models/RequestSchedule.dart'; +import '../models/request_schedule.dart'; class ScheduleProvider with ChangeNotifier { Client client = @@ -27,6 +27,7 @@ class ScheduleProvider with ChangeNotifier { getDoctorSchedule() async { const url = BASE_URL + 'Doctors.svc/REST/GetDoctorWorkingHoursTable'; try { + if (await Helpers.checkConnection()) { final response = await client.post(url, body: json.encode(requestSchedule.toJson())); final int statusCode = response.statusCode; diff --git a/lib/routes.dart b/lib/routes.dart index e58f3d4d..ae77d217 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -21,7 +21,7 @@ import './screens/profile_screen.dart'; import './screens/settings/settings_screen.dart'; import 'screens/doctor/doctor_reply_screen.dart'; -const String INIT_ROUTE = LOGIN; +const String INIT_ROUTE = HOME; const String HOME = '/'; const String LOGIN = 'login'; const String PROFILE = 'profile'; diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart index aade7083..b650c611 100644 --- a/lib/screens/dashboard_screen.dart +++ b/lib/screens/dashboard_screen.dart @@ -1,7 +1,9 @@ import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/providers/doctor_reply_provider.dart'; import 'package:doctor_app_flutter/providers/medicine_provider.dart'; +import 'package:doctor_app_flutter/providers/projects_provider.dart'; import 'package:doctor_app_flutter/screens/medicine/medicine_search_screen.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:provider/provider.dart'; import '../routes.dart'; @@ -25,10 +27,13 @@ class DashboardScreen extends StatefulWidget { } class _DashboardScreenState extends State { + + ProjectsProvider projectsProvider; @override Widget build(BuildContext context) { + projectsProvider = Provider.of(context); return AppScaffold( - appBarTitle: 'Home', + appBarTitle: TranslationBase.of(context).dashboardScreenToolbarTitle, current: 0, body: Container( child: Column( @@ -206,7 +211,7 @@ class _DashboardScreenState extends State { backgroundColor: Colors.green[200], ), onTap: () { - Navigator.of(context).pushNamed(PATIENT_SEARCH); + Navigator.of(context).pushNamed(PATIENT_SEARCH); }, ), ), diff --git a/lib/screens/settings/settings_screen.dart b/lib/screens/settings/settings_screen.dart index ccb9b588..122ab4ab 100644 --- a/lib/screens/settings/settings_screen.dart +++ b/lib/screens/settings/settings_screen.dart @@ -1,11 +1,64 @@ +import 'package:doctor_app_flutter/providers/projects_provider.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:flutter/material.dart'; +import 'package:hexcolor/hexcolor.dart'; +import 'package:provider/provider.dart'; class SettingsScreen extends StatelessWidget { + + ProjectsProvider projectsProvider; @override Widget build(BuildContext context) { + projectsProvider = Provider.of(context); return AppScaffold( - appBarTitle: "SETTINS", - body: Container(), + appBarTitle: TranslationBase.of(context).settings.toUpperCase(), + body: ListView( + children: [ + AppText(TranslationBase.of(context).language.toUpperCase(),fontSize: 18,margin: 5,fontWeight: FontWeight.bold,), + Container( + margin: EdgeInsets.symmetric(horizontal: 10,vertical: 10), + height: 50, + decoration: BoxDecoration( + border: Border.all(color: Colors.grey[600],width: 2.0), + borderRadius: BorderRadius.circular(8.0) + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(7.0), + child: Row( + children: [ + Expanded( + child: InkWell( + onTap: () { projectsProvider.changeDirection('en'); }, + child: AnimatedContainer( + duration: Duration(milliseconds: 350), + decoration: BoxDecoration( + color: !projectsProvider.isArabic ? Hexcolor('#58434F') : Colors.transparent, + border: Border(right: BorderSide(color: Colors.grey[200], width: 2.0)) + ), + child: Center(child: AppText(TranslationBase.of(context).lanEnglish, color: !projectsProvider.isArabic ? Colors.white : Colors.grey[500])) + ), + ), + ), + Expanded( + child: InkWell( + onTap: (){projectsProvider.changeDirection('ar');}, + child: AnimatedContainer( + duration: Duration(milliseconds: 350), + decoration: BoxDecoration( + color: projectsProvider.isArabic ? Hexcolor('#58434F') : Colors.transparent, + border: Border(right: BorderSide(color: Colors.grey[200], width: 2.0)) + ), + child: Center(child: AppText(TranslationBase.of(context).lanArabic, color: projectsProvider.isArabic ? Colors.white : Colors.grey[500],)) + ), + ), + ) + ], + ), + ), + ) + ], + ), ); } } \ No newline at end of file diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart new file mode 100644 index 00000000..9966f051 --- /dev/null +++ b/lib/util/translations_delegate_base.dart @@ -0,0 +1,48 @@ +import 'dart:async'; + +import 'package:flutter/foundation.dart' show SynchronousFuture; +import 'package:flutter/material.dart'; + +class TranslationBase { + TranslationBase(this.locale); + + final Locale locale; + + static TranslationBase of(BuildContext context) { + return Localizations.of(context, TranslationBase); + } + + static Map> _localizedValues = { + 'dashboardScreenToolbarTitle': {'ar': 'الرئيسة', 'en': 'Home'}, + 'settings': {'en': 'Settings', 'ar': 'الاعدادات'}, + 'language': {'en': 'App Language', 'ar': 'لغة التطبيق'}, + 'lanEnglish': {'en': 'English', 'ar': 'English'}, + 'lanArabic': {'en': 'العربية', 'ar': 'العربية'} + }; + + String get dashboardScreenToolbarTitle => _localizedValues['dashboardScreenToolbarTitle'][locale.languageCode]; + + String get settings => _localizedValues['settings'][locale.languageCode]; + + String get language => _localizedValues['language'][locale.languageCode]; + + String get lanEnglish => _localizedValues['lanEnglish'][locale.languageCode]; + + String get lanArabic => _localizedValues['lanArabic'][locale.languageCode]; + +} + +class TranslationBaseDelegate extends LocalizationsDelegate { + const TranslationBaseDelegate(); + + @override + bool isSupported(Locale locale) => ['en', 'ar'].contains(locale.languageCode); + + @override + Future load(Locale locale) { + return SynchronousFuture(TranslationBase(locale)); + } + + @override + bool shouldReload(TranslationBaseDelegate old) => false; +} diff --git a/pubspec.lock b/pubspec.lock index 14612a67..bdaff9da 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -244,6 +244,11 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.4" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" flutter_plugin_android_lifecycle: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 20f3f50a..47f6590e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -20,6 +20,8 @@ dependencies: flutter: sdk: flutter hexcolor: ^1.0.1 + flutter_localizations: + sdk: flutter flutter_device_type: ^0.2.0 intl: ^0.16.1 http: ^0.12.0+4 From 3fbc2dabefb597cd161abf9947763aeaf949b245 Mon Sep 17 00:00:00 2001 From: her_username Date: Sun, 10 May 2020 17:53:22 +0300 Subject: [PATCH 2/3] remove i18n package, change the location localized values, change provider name and create new provider --- lib/config/localized_values.dart | 7 +++ lib/config/shared_pref_kay.dart | 2 +- lib/i18n/ar.i18n.dart | 25 -------- lib/i18n/ar.i18n.yaml | 3 - lib/i18n/en.i18n.dart | 25 -------- lib/i18n/en.i18n.yaml | 4 -- lib/main.dart | 12 ++-- lib/providers/Project_provider.dart | 43 +++++++++++++ lib/providers/hospital_provider.dart | 41 ++++++++++++ lib/providers/projects_provider.dart | 77 ----------------------- lib/screens/dashboard_screen.dart | 4 +- lib/screens/settings/settings_screen.dart | 9 +-- lib/util/translations_delegate_base.dart | 19 +++--- lib/widgets/auth/login_form.dart | 4 +- pubspec.lock | 21 ------- pubspec.yaml | 1 - 16 files changed, 115 insertions(+), 182 deletions(-) create mode 100644 lib/config/localized_values.dart delete mode 100644 lib/i18n/ar.i18n.dart delete mode 100644 lib/i18n/ar.i18n.yaml delete mode 100644 lib/i18n/en.i18n.dart delete mode 100644 lib/i18n/en.i18n.yaml create mode 100644 lib/providers/Project_provider.dart create mode 100644 lib/providers/hospital_provider.dart delete mode 100644 lib/providers/projects_provider.dart diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart new file mode 100644 index 00000000..20393d92 --- /dev/null +++ b/lib/config/localized_values.dart @@ -0,0 +1,7 @@ +const Map> localizedValues = { + 'dashboardScreenToolbarTitle': {'ar': 'الرئيسة', 'en': 'Home'}, + 'settings': {'en': 'Settings', 'ar': 'الاعدادات'}, + 'language': {'en': 'App Language', 'ar': 'لغة التطبيق'}, + 'lanEnglish': {'en': 'English', 'ar': 'English'}, + 'lanArabic': {'en': 'العربية', 'ar': 'العربية'} +}; diff --git a/lib/config/shared_pref_kay.dart b/lib/config/shared_pref_kay.dart index 75e39bb1..8a90edf6 100644 --- a/lib/config/shared_pref_kay.dart +++ b/lib/config/shared_pref_kay.dart @@ -1,4 +1,4 @@ final TOKEN = 'token'; final PROJECT_ID="projectID"; final SLECTED_PATIENT_TYPE="slectedPatientType"; -final APP_Language = "Language"; \ No newline at end of file +final APP_Language = "language"; \ No newline at end of file diff --git a/lib/i18n/ar.i18n.dart b/lib/i18n/ar.i18n.dart deleted file mode 100644 index 2b768d19..00000000 --- a/lib/i18n/ar.i18n.dart +++ /dev/null @@ -1,25 +0,0 @@ -// GENERATED FILE, do not edit! -import 'package:i18n/i18n.dart' as i18n; - -String get _languageCode => 'en'; -String get _localeName => 'en'; - -String _plural(int count, {String zero, String one, String two, String few, String many, String other}) => - i18n.plural(count, _languageCode, zero:zero, one:one, two:two, few:few, many:many, other:other); -String _ordinal(int count, {String zero, String one, String two, String few, String many, String other}) => - i18n.ordinal(count, _languageCode, zero:zero, one:one, two:two, few:few, many:many, other:other); -String _cardinal(int count, {String zero, String one, String two, String few, String many, String other}) => - i18n.cardinal(count, _languageCode, zero:zero, one:one, two:two, few:few, many:many, other:other); - -class Ar { - const Ar(); - ButtonAr get button => ButtonAr(this); -} - -class ButtonAr { - final Ar _parent; - const ButtonAr(this._parent); - String get save => "حفظ"; - String get load => "تحميل"; -} - diff --git a/lib/i18n/ar.i18n.yaml b/lib/i18n/ar.i18n.yaml deleted file mode 100644 index c59964df..00000000 --- a/lib/i18n/ar.i18n.yaml +++ /dev/null @@ -1,3 +0,0 @@ -button: - save: حفظ - load: تحميل \ No newline at end of file diff --git a/lib/i18n/en.i18n.dart b/lib/i18n/en.i18n.dart deleted file mode 100644 index 9f06a223..00000000 --- a/lib/i18n/en.i18n.dart +++ /dev/null @@ -1,25 +0,0 @@ -// GENERATED FILE, do not edit! -import 'package:i18n/i18n.dart' as i18n; - -String get _languageCode => 'en'; -String get _localeName => 'en'; - -String _plural(int count, {String zero, String one, String two, String few, String many, String other}) => - i18n.plural(count, _languageCode, zero:zero, one:one, two:two, few:few, many:many, other:other); -String _ordinal(int count, {String zero, String one, String two, String few, String many, String other}) => - i18n.ordinal(count, _languageCode, zero:zero, one:one, two:two, few:few, many:many, other:other); -String _cardinal(int count, {String zero, String one, String two, String few, String many, String other}) => - i18n.cardinal(count, _languageCode, zero:zero, one:one, two:two, few:few, many:many, other:other); - -class En { - const En(); - ButtonEn get button => ButtonEn(this); -} - -class ButtonEn { - final En _parent; - const ButtonEn(this._parent); - String get save => "Save"; - String get load => "Load"; -} - diff --git a/lib/i18n/en.i18n.yaml b/lib/i18n/en.i18n.yaml deleted file mode 100644 index a4c26572..00000000 --- a/lib/i18n/en.i18n.yaml +++ /dev/null @@ -1,4 +0,0 @@ -button: - save: Save - load: Load - diff --git a/lib/main.dart b/lib/main.dart index cc9900ce..7d191bce 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,4 @@ +import 'package:doctor_app_flutter/providers/Project_provider.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; @@ -7,7 +8,7 @@ import 'package:provider/provider.dart'; import './config/size_config.dart'; import './providers/auth_provider.dart'; import './providers/patients_provider.dart'; -import './providers/projects_provider.dart'; +import './providers/hospital_provider.dart'; import './routes.dart'; void main() => runApp(MyApp()); @@ -24,13 +25,14 @@ class MyApp extends StatelessWidget { providers: [ ChangeNotifierProvider(create: (context) => PatientsProvider()), ChangeNotifierProvider(create: (context) => AuthProvider()), - ChangeNotifierProvider(create: (context) => ProjectsProvider()), + ChangeNotifierProvider(create: (context) => HospitalProvider()), + ChangeNotifierProvider(create: (context) => ProjectProvider(),) ], - child: Consumer( - builder: (context,projectsProvider,child) => MaterialApp( + child: Consumer( + builder: (context,projectProvider,child) => MaterialApp( showSemanticsDebugger: false, title: 'Flutter Demo', - locale: projectsProvider.appLocal, + locale: projectProvider.appLocal, localizationsDelegates: [ TranslationBaseDelegate(), GlobalMaterialLocalizations.delegate, diff --git a/lib/providers/Project_provider.dart b/lib/providers/Project_provider.dart new file mode 100644 index 00000000..abf53ea3 --- /dev/null +++ b/lib/providers/Project_provider.dart @@ -0,0 +1,43 @@ +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{ + + DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); + Locale _appLocale; + String currentLanguage = 'ar'; + bool _isArabic = false; + + Locale get appLocal => _appLocale; + + bool get isArabic => _isArabic; + + ProjectProvider(){ + loadSharedPrefLanguage (); + } + void loadSharedPrefLanguage() async { + currentLanguage = await sharedPref.getString(APP_Language); + _appLocale = Locale(currentLanguage ?? 'ar'); + _isArabic = currentLanguage != null + ? currentLanguage == 'ar' ? true : false + : false; + notifyListeners(); + } + + void changeLanguage(String lan) { + if (lan != "en" && currentLanguage != lan) { + _appLocale = Locale("ar"); + _isArabic = true; + currentLanguage = 'ar'; + sharedPref.setString(APP_Language, 'ar'); + } else if (lan != "ar" && currentLanguage != lan) { + _appLocale = Locale("en"); + _isArabic = false; + currentLanguage = 'en'; + sharedPref.setString(APP_Language, 'en'); + } + notifyListeners(); + } + +} \ No newline at end of file diff --git a/lib/providers/hospital_provider.dart b/lib/providers/hospital_provider.dart new file mode 100644 index 00000000..005a53ac --- /dev/null +++ b/lib/providers/hospital_provider.dart @@ -0,0 +1,41 @@ +import 'dart:convert'; + +import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; +import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; + +import '../interceptor/http_interceptor.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; +import 'package:http_interceptor/http_client_with_interceptor.dart'; + +const GET_PROJECTS = BASE_URL + 'Lists.svc/REST/GetProjectForDoctorAPP'; + +class HospitalProvider with ChangeNotifier { + + + + Client client = + HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]); + + Future getProjectsList() async { + const url = GET_PROJECTS; + var info = { + "LanguageID": 2, + "stamp": "2020-02-26T13:51:44.111Z", + "IPAdress": "11.11.11.11", + "VersionID": 1.2, + "Channel": 9, + "TokenID": "", + "SessionID": "i1UJwCTSqt", + "IsLoginForDoctorApp": true + }; + try { + final response = await client.post(url, body: json.encode(info)); + return Future.value(json.decode(response.body)); + } catch (error) { + throw error; + // print('error'); + } + } +} diff --git a/lib/providers/projects_provider.dart b/lib/providers/projects_provider.dart deleted file mode 100644 index 983b6351..00000000 --- a/lib/providers/projects_provider.dart +++ /dev/null @@ -1,77 +0,0 @@ -import 'dart:convert'; - -import 'package:doctor_app_flutter/config/config.dart'; -import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; -import 'package:doctor_app_flutter/providers/schedule_provider.dart'; -import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; -import 'package:provider/provider.dart'; - -import '../interceptor/http_interceptor.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; -import 'package:http_interceptor/http_client_with_interceptor.dart'; - -const GET_PROJECTS = BASE_URL + 'Lists.svc/REST/GetProjectForDoctorAPP'; - -class ProjectsProvider with ChangeNotifier { - DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); - Locale _appLocale; - String currentLanguage = 'ar'; - bool _isArabic = false; - - Locale get appLocal => _appLocale; - - bool get isArabic => _isArabic; - - ProjectsProvider() { - loadSharedPrefLan(); - } - - void loadSharedPrefLan() async { - currentLanguage = await sharedPref.getString(APP_Language); - _appLocale = Locale(currentLanguage ?? 'ar'); - _isArabic = currentLanguage != null - ? currentLanguage == 'ar' ? true : false - : false; - notifyListeners(); - } - - void changeDirection(String lan) { - if (lan != "en" && currentLanguage != lan) { - _appLocale = Locale("ar"); - _isArabic = true; - currentLanguage = 'ar'; - sharedPref.setString(APP_Language, 'ar'); - } else if (lan != "ar" && currentLanguage != lan) { - _appLocale = Locale("en"); - _isArabic = false; - currentLanguage = 'en'; - sharedPref.setString(APP_Language, 'en'); - } - notifyListeners(); - } - - Client client = - HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]); - - Future getProjectsList() async { - const url = GET_PROJECTS; - var info = { - "LanguageID": 2, - "stamp": "2020-02-26T13:51:44.111Z", - "IPAdress": "11.11.11.11", - "VersionID": 1.2, - "Channel": 9, - "TokenID": "", - "SessionID": "i1UJwCTSqt", - "IsLoginForDoctorApp": true - }; - try { - final response = await client.post(url, body: json.encode(info)); - return Future.value(json.decode(response.body)); - } catch (error) { - throw error; - // print('error'); - } - } -} diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart index b650c611..97e5158f 100644 --- a/lib/screens/dashboard_screen.dart +++ b/lib/screens/dashboard_screen.dart @@ -1,7 +1,7 @@ import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/providers/doctor_reply_provider.dart'; import 'package:doctor_app_flutter/providers/medicine_provider.dart'; -import 'package:doctor_app_flutter/providers/projects_provider.dart'; +import 'package:doctor_app_flutter/providers/hospital_provider.dart'; import 'package:doctor_app_flutter/screens/medicine/medicine_search_screen.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; @@ -28,7 +28,7 @@ class DashboardScreen extends StatefulWidget { class _DashboardScreenState extends State { - ProjectsProvider projectsProvider; + HospitalProvider projectsProvider; @override Widget build(BuildContext context) { projectsProvider = Provider.of(context); diff --git a/lib/screens/settings/settings_screen.dart b/lib/screens/settings/settings_screen.dart index 122ab4ab..b9ec86ce 100644 --- a/lib/screens/settings/settings_screen.dart +++ b/lib/screens/settings/settings_screen.dart @@ -1,4 +1,5 @@ -import 'package:doctor_app_flutter/providers/projects_provider.dart'; +import 'package:doctor_app_flutter/providers/Project_provider.dart'; +import 'package:doctor_app_flutter/providers/hospital_provider.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; @@ -7,7 +8,7 @@ import 'package:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; class SettingsScreen extends StatelessWidget { - ProjectsProvider projectsProvider; + ProjectProvider projectsProvider; @override Widget build(BuildContext context) { projectsProvider = Provider.of(context); @@ -29,7 +30,7 @@ class SettingsScreen extends StatelessWidget { children: [ Expanded( child: InkWell( - onTap: () { projectsProvider.changeDirection('en'); }, + onTap: () { projectsProvider.changeLanguage('en'); }, child: AnimatedContainer( duration: Duration(milliseconds: 350), decoration: BoxDecoration( @@ -42,7 +43,7 @@ class SettingsScreen extends StatelessWidget { ), Expanded( child: InkWell( - onTap: (){projectsProvider.changeDirection('ar');}, + onTap: (){projectsProvider.changeLanguage('ar');}, child: AnimatedContainer( duration: Duration(milliseconds: 350), decoration: BoxDecoration( diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart index 9966f051..1af735a1 100644 --- a/lib/util/translations_delegate_base.dart +++ b/lib/util/translations_delegate_base.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:doctor_app_flutter/config/localized_values.dart'; import 'package:flutter/foundation.dart' show SynchronousFuture; import 'package:flutter/material.dart'; @@ -12,23 +13,17 @@ class TranslationBase { return Localizations.of(context, TranslationBase); } - static Map> _localizedValues = { - 'dashboardScreenToolbarTitle': {'ar': 'الرئيسة', 'en': 'Home'}, - 'settings': {'en': 'Settings', 'ar': 'الاعدادات'}, - 'language': {'en': 'App Language', 'ar': 'لغة التطبيق'}, - 'lanEnglish': {'en': 'English', 'ar': 'English'}, - 'lanArabic': {'en': 'العربية', 'ar': 'العربية'} - }; - String get dashboardScreenToolbarTitle => _localizedValues['dashboardScreenToolbarTitle'][locale.languageCode]; - String get settings => _localizedValues['settings'][locale.languageCode]; + String get dashboardScreenToolbarTitle => localizedValues['dashboardScreenToolbarTitle'][locale.languageCode]; - String get language => _localizedValues['language'][locale.languageCode]; + String get settings => localizedValues['settings'][locale.languageCode]; - String get lanEnglish => _localizedValues['lanEnglish'][locale.languageCode]; + String get language => localizedValues['language'][locale.languageCode]; - String get lanArabic => _localizedValues['lanArabic'][locale.languageCode]; + String get lanEnglish => localizedValues['lanEnglish'][locale.languageCode]; + + String get lanArabic => localizedValues['lanArabic'][locale.languageCode]; } diff --git a/lib/widgets/auth/login_form.dart b/lib/widgets/auth/login_form.dart index f20cb0f3..43daa219 100644 --- a/lib/widgets/auth/login_form.dart +++ b/lib/widgets/auth/login_form.dart @@ -10,7 +10,7 @@ import '../../config/shared_pref_kay.dart'; import '../../config/size_config.dart'; import '../../models/user_model.dart'; import '../../providers/auth_provider.dart'; -import '../../providers/projects_provider.dart'; +import '../../providers/hospital_provider.dart'; import '../../routes.dart'; import '../../util/dr_app_shared_pref.dart'; import '../../util/dr_app_toast_msg.dart'; @@ -290,7 +290,7 @@ class _LoginFormState extends State { } getProjectsList() { - ProjectsProvider projectsProv = Provider.of(context); + HospitalProvider projectsProv = Provider.of(context); projectsProv.getProjectsList().then((res) { if (res['MessageStatus'] == 1) { setState(() { diff --git a/pubspec.lock b/pubspec.lock index bdaff9da..e5495a16 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -322,13 +322,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.1.4" - i18n: - dependency: "direct main" - description: - name: i18n - url: "https://pub.dartlang.org" - source: hosted - version: "0.9.10" imei_plugin: dependency: "direct main" description: @@ -504,13 +497,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.5" - quick_log: - dependency: transitive - description: - name: quick_log - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.0" quiver: dependency: transitive description: @@ -518,13 +504,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.5" - rxdart: - dependency: transitive - description: - name: rxdart - url: "https://pub.dartlang.org" - source: hosted - version: "0.23.1" scratch_space: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 47f6590e..f4867698 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -26,7 +26,6 @@ dependencies: intl: ^0.16.1 http: ^0.12.0+4 provider: ^4.0.5+1 - i18n: any shared_preferences: ^0.5.6+3 imei_plugin: ^1.1.6 flutter_flexible_toast: ^0.1.4 From 216374aed26e20aff5ea13b0f8306f17dc7f9ca5 Mon Sep 17 00:00:00 2001 From: her_username Date: Sun, 10 May 2020 17:57:36 +0300 Subject: [PATCH 3/3] change class name and change init route --- lib/main.dart | 2 +- ...ct_provider.dart => project_provider.dart} | 0 lib/routes.dart | 2 +- lib/screens/settings/settings_screen.dart | 2 +- pubspec.lock | 35 +++++++++++++++++++ 5 files changed, 38 insertions(+), 3 deletions(-) rename lib/providers/{Project_provider.dart => project_provider.dart} (100%) diff --git a/lib/main.dart b/lib/main.dart index 7d191bce..869d0b88 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,4 @@ -import 'package:doctor_app_flutter/providers/Project_provider.dart'; +import 'package:doctor_app_flutter/providers/project_provider.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; diff --git a/lib/providers/Project_provider.dart b/lib/providers/project_provider.dart similarity index 100% rename from lib/providers/Project_provider.dart rename to lib/providers/project_provider.dart diff --git a/lib/routes.dart b/lib/routes.dart index 786bb904..dcef9fbe 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -22,7 +22,7 @@ import './screens/profile_screen.dart'; import './screens/settings/settings_screen.dart'; import 'screens/doctor/doctor_reply_screen.dart'; -const String INIT_ROUTE = HOME; +const String INIT_ROUTE = LOGIN; const String HOME = '/'; const String LOGIN = 'login'; const String PROFILE = 'profile'; diff --git a/lib/screens/settings/settings_screen.dart b/lib/screens/settings/settings_screen.dart index b9ec86ce..c205f49d 100644 --- a/lib/screens/settings/settings_screen.dart +++ b/lib/screens/settings/settings_screen.dart @@ -1,4 +1,4 @@ -import 'package:doctor_app_flutter/providers/Project_provider.dart'; +import 'package:doctor_app_flutter/providers/project_provider.dart'; import 'package:doctor_app_flutter/providers/hospital_provider.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; diff --git a/pubspec.lock b/pubspec.lock index e5495a16..4e2d1cde 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -371,6 +371,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.11.4" + maps_launcher: + dependency: "direct main" + description: + name: maps_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" matcher: dependency: transitive description: @@ -628,6 +635,34 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.6" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "5.4.5" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+5" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.6" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.1+4" vector_math: dependency: transitive description: