update Localizations

merge-requests/53/head
her_username 5 years ago
parent 254706218d
commit cc929ba4a5

@ -1,3 +1,4 @@
final TOKEN = 'token';
final PROJECT_ID="projectID";
final SLECTED_PATIENT_TYPE="slectedPatientType";
final SLECTED_PATIENT_TYPE="slectedPatientType";
final APP_Language = "Language";

@ -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<AuthProvider>(create: (context) => AuthProvider()),
ChangeNotifierProvider<ProjectsProvider>(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<ProjectsProvider>(
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,
)
),
);
});

@ -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';

@ -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<Map> getProjectsList() async {
const url = GET_PROJECTS;
var info = {

@ -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;

@ -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';

@ -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<DashboardScreen> {
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<DashboardScreen> {
backgroundColor: Colors.green[200],
),
onTap: () {
Navigator.of(context).pushNamed(PATIENT_SEARCH);
Navigator.of(context).pushNamed(PATIENT_SEARCH);
},
),
),

@ -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],))
),
),
)
],
),
),
)
],
),
);
}
}

@ -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<TranslationBase>(context, TranslationBase);
}
static Map<String, Map<String, String>> _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<TranslationBase> {
const TranslationBaseDelegate();
@override
bool isSupported(Locale locale) => ['en', 'ar'].contains(locale.languageCode);
@override
Future<TranslationBase> load(Locale locale) {
return SynchronousFuture<TranslationBase>(TranslationBase(locale));
}
@override
bool shouldReload(TranslationBaseDelegate old) => false;
}

@ -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:

@ -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

Loading…
Cancel
Save