Auto SMS, Themes, Voice Command

merge-requests/251/head
Sultan Khan 4 years ago
parent 3e947dda37
commit e61c26b853

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

@ -12,8 +12,8 @@ const EXA_CART_API_BASE_URL = 'https://mdlaboratories.com/exacartapi';
const PACKAGES_CATEGORIES = '/api/categories'; const PACKAGES_CATEGORIES = '/api/categories';
const PACKAGES_PRODUCTS = '/api/products'; const PACKAGES_PRODUCTS = '/api/products';
//const BASE_URL = 'https://uat.hmgwebservices.com/'; const BASE_URL = 'https://uat.hmgwebservices.com/';
const BASE_URL = 'https://hmgwebservices.com/'; //const BASE_URL = 'https://hmgwebservices.com/';
//const BASE_PHARMACY_URL = 'http://swd-pharapp-01:7200/api/'; //const BASE_PHARMACY_URL = 'http://swd-pharapp-01:7200/api/';
const BASE_PHARMACY_URL = 'https://uat.hmgwebservices.com/epharmacy/api/'; const BASE_PHARMACY_URL = 'https://uat.hmgwebservices.com/epharmacy/api/';

@ -9,6 +9,7 @@ import 'package:diplomaticquarterapp/uitl/LocalNotification.dart';
import 'package:diplomaticquarterapp/uitl/PlatformBridge.dart'; import 'package:diplomaticquarterapp/uitl/PlatformBridge.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -23,18 +24,33 @@ import 'pages/pharmacies/compare-list.dart';
void main() async { void main() async {
setupLocator(); setupLocator();
runApp(ChangeNotifierProvider<ThemeNotifier>(create: (context) => ThemeNotifier(defaultTheme), child: MyApp())); runApp(MyApp());
} }
class MyApp extends StatelessWidget { class MyApp extends StatefulWidget {
@override
_MyApp createState() => new _MyApp();
}
class _MyApp extends State<MyApp> {
@override
void initState() {
// ProjectViewModel projectProvider;
// projectProvider = Provider.of(context);
// var font = projectProvider.isArabic ? 'Cairo' : 'WorkSans';
ThemeNotifier(defaultTheme());
super.initState();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
PlatformBridge.init(context); PlatformBridge.init(context);
LocalNotification.init(onNotificationClick: (payload){ LocalNotification.init(onNotificationClick: (payload) {
LocalNotification.getInstance().showNow(title: "Payload", subtitle: payload, payload: payload); LocalNotification.getInstance()
.showNow(title: "Payload", subtitle: payload, payload: payload);
}); });
final themeNotifier = Provider.of<ThemeNotifier>(context); // final themeNotifier = Provider.of<ThemeNotifier>(context);
precacheImage(AssetImage('assets/images/powerd-by.jpg'), context); precacheImage(AssetImage('assets/images/powerd-by.jpg'), context);
return LayoutBuilder( return LayoutBuilder(
builder: (context, constraints) { builder: (context, constraints) {
@ -46,11 +62,15 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider<ProjectViewModel>( ChangeNotifierProvider<ProjectViewModel>(
create: (context) => ProjectViewModel(), create: (context) => ProjectViewModel(),
), ),
ChangeNotifierProvider<ToDoCountProviderModel>(create: (context) => ToDoCountProviderModel()), ChangeNotifierProvider<ToDoCountProviderModel>(
ChangeNotifierProvider<SearchProvider>(create: (context) => SearchProvider()), create: (context) => ToDoCountProviderModel()),
ChangeNotifierProvider<SearchProvider>(
create: (context) => SearchProvider()),
ChangeNotifierProvider.value( ChangeNotifierProvider.value(
value: SearchProvider(), value: SearchProvider(),
), ),
ChangeNotifierProvider<ThemeNotifier>(
create: (context) => ThemeNotifier(defaultTheme())),
StreamProvider.value( StreamProvider.value(
value: RobotProvider().intStream(), value: RobotProvider().intStream(),
initialData: RobotProvider().setValue({}), initialData: RobotProvider().setValue({}),
@ -60,7 +80,6 @@ class MyApp extends StatelessWidget {
], ],
child: Consumer<ProjectViewModel>( child: Consumer<ProjectViewModel>(
builder: (context, projectProvider, child) => MaterialApp( builder: (context, projectProvider, child) => MaterialApp(
showSemanticsDebugger: false, showSemanticsDebugger: false,
title: 'Diplomatic Quarter App', title: 'Diplomatic Quarter App',
locale: projectProvider.appLocal, locale: projectProvider.appLocal,
@ -74,47 +93,50 @@ class MyApp extends StatelessWidget {
const Locale('ar', ''), // Arabic const Locale('ar', ''), // Arabic
const Locale('en', ''), // English const Locale('en', ''), // English
], ],
theme: ThemeData( theme: Provider.of<ThemeNotifier>(context).getTheme(),
fontFamily: projectProvider.isArabic ? 'Cairo' : 'WorkSans', // theme: ThemeData(
primarySwatch: Colors.blue, // fontFamily: projectProvider.isArabic ? 'Cairo' : 'WorkSans',
visualDensity: VisualDensity.adaptivePlatformDensity, // primarySwatch: Colors.blue,
brightness: Brightness.light, // visualDensity: VisualDensity.adaptivePlatformDensity,
pageTransitionsTheme: const PageTransitionsTheme( // brightness: Brightness.light,
builders: { // pageTransitionsTheme: const PageTransitionsTheme(
TargetPlatform.android: ZoomPageTransitionsBuilder(), // builders: {
TargetPlatform.iOS: CupertinoPageTransitionsBuilder(), // TargetPlatform.android: ZoomPageTransitionsBuilder(),
}, // TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
), // },
hintColor: Colors.grey[400], // ),
textTheme: TextTheme( // hintColor: Colors.grey[400],
headline1: TextStyle( // textTheme: TextTheme(
color: Color(0xffB8382C), // headline1: TextStyle(
), // color: Color(0xffB8382C),
), // ),
disabledColor: Colors.grey[300], // ),
errorColor: Color.fromRGBO(235, 80, 60, 1.0), // disabledColor: Colors.grey[300],
scaffoldBackgroundColor: Color(0xffE9E9E9), // Colors.grey[100], // errorColor: Color.fromRGBO(235, 80, 60, 1.0),
textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5), // scaffoldBackgroundColor:
textSelectionHandleColor: Colors.grey, // Color(0xffE9E9E9), // Colors.grey[100],
canvasColor: Colors.white, // textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5),
backgroundColor: Color.fromRGBO(255, 255, 255, 1), // textSelectionHandleColor: Colors.grey,
highlightColor: Colors.grey[100].withOpacity(0.4), // canvasColor: Colors.white,
splashColor: Colors.transparent, // backgroundColor: Color.fromRGBO(255, 255, 255, 1),
primaryColor: Color(0xff515A5D), // highlightColor: Colors.grey[100].withOpacity(0.4),
toggleableActiveColor: secondaryColor, // splashColor: Colors.transparent,
indicatorColor: secondaryColor, // primaryColor: Color(0xff515A5D),
bottomSheetTheme: BottomSheetThemeData(backgroundColor: HexColor('#E0E0E0')), // toggleableActiveColor: secondaryColor,
cursorColor: Colors.grey, // indicatorColor: secondaryColor,
iconTheme: IconThemeData(), // bottomSheetTheme: BottomSheetThemeData(
appBarTheme: AppBarTheme( // backgroundColor: HexColor('#E0E0E0')),
color: Color(0xff515A5D), // cursorColor: Colors.grey,
brightness: Brightness.light, // iconTheme: IconThemeData(),
elevation: 0.0, // appBarTheme: AppBarTheme(
actionsIconTheme: IconThemeData( // color: Color(0xff515A5D),
color: Colors.grey[800], // brightness: Brightness.light,
), // elevation: 0.0,
), // actionsIconTheme: IconThemeData(
), // color: Colors.grey[800],
// ),
// ),
// ),
initialRoute: SPLASH, initialRoute: SPLASH,
routes: routes, routes: routes,
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,

@ -21,7 +21,7 @@ class SendActivationRequest {
Null sessionID; Null sessionID;
bool isDentalAllowedBackend; bool isDentalAllowedBackend;
int deviceTypeID; int deviceTypeID;
String sMSSignature;
SendActivationRequest( SendActivationRequest(
{this.patientMobileNumber, {this.patientMobileNumber,
this.mobileNo, this.mobileNo,
@ -44,7 +44,8 @@ class SendActivationRequest {
this.patientOutSA, this.patientOutSA,
this.sessionID, this.sessionID,
this.isDentalAllowedBackend, this.isDentalAllowedBackend,
this.deviceTypeID}); this.deviceTypeID,
this.sMSSignature});
SendActivationRequest.fromJson(Map<String, dynamic> json) { SendActivationRequest.fromJson(Map<String, dynamic> json) {
patientMobileNumber = json['PatientMobileNumber']; patientMobileNumber = json['PatientMobileNumber'];
@ -69,6 +70,7 @@ class SendActivationRequest {
sessionID = json['SessionID']; sessionID = json['SessionID'];
isDentalAllowedBackend = json['isDentalAllowedBackend']; isDentalAllowedBackend = json['isDentalAllowedBackend'];
deviceTypeID = json['DeviceTypeID']; deviceTypeID = json['DeviceTypeID'];
sMSSignature = json['SMSSignature'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
@ -95,6 +97,7 @@ class SendActivationRequest {
data['SessionID'] = this.sessionID; data['SessionID'] = this.sessionID;
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend; data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
data['DeviceTypeID'] = this.deviceTypeID; data['DeviceTypeID'] = this.deviceTypeID;
data['SMSSignature'] = sMSSignature;
return data; return data;
} }
} }

@ -339,47 +339,6 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
return permissionResults; return permissionResults;
} }
setTheme() async {
//
// defaultTheme =
// ThemeData(
// fontFamily:projectViewModel.isArabic ? 'Cairo' : 'WorkSans',
// primarySwatch: Colors.blue,
// visualDensity: VisualDensity.adaptivePlatformDensity,
// brightness: Brightness.light,
// pageTransitionsTheme: const PageTransitionsTheme(
// builders: {
// TargetPlatform.android: ZoomPageTransitionsBuilder(),
// TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
// },
// ),
// hintColor: Colors.grey[400],
// disabledColor: Colors.grey[300],
// errorColor: Color.fromRGBO(235, 80, 60, 1.0),
// scaffoldBackgroundColor: Color(0xffEEEEEE),
// textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5),
// textSelectionHandleColor: Colors.grey,
// canvasColor: Colors.white,
// backgroundColor: Colors.white,
// highlightColor: Colors.grey[100].withOpacity(0.4),
// splashColor: Colors.transparent,
// primaryColor: Color(0xff40ACC9),
// bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)),
// cursorColor: Colors.grey,
// cardColor: Colors.white,
// iconTheme: IconThemeData(),
// appBarTheme: AppBarTheme(
// color: Color(0xff40ACC9),
// brightness: Brightness.dark,
// elevation: 10.0,
// actionsIconTheme: IconThemeData(
// color: Color(0xff40ACC9),
// ),
// ),
// );
// themeNotifier.setTheme(defaultTheme);
}
static Future<dynamic> myBackgroundMessageHandler( static Future<dynamic> myBackgroundMessageHandler(
Map<String, dynamic> message) async { Map<String, dynamic> message) async {
Map<String, dynamic> myMap = new Map<String, dynamic>.from(message['data']); Map<String, dynamic> myMap = new Map<String, dynamic>.from(message['data']);
@ -494,14 +453,15 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
appBar: AppBar( appBar: AppBar(
elevation: 0, elevation: 0,
textTheme: TextTheme( textTheme: TextTheme(
headline6: headline6: TextStyle(
TextStyle(color: Colors.white, fontWeight: FontWeight.bold), color: Theme.of(context).textTheme.headline1.color,
fontWeight: FontWeight.bold),
), ),
title: Text( title: Text(
getText(currentTab).toUpperCase(), getText(currentTab).toUpperCase(),
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Colors.white, color: Theme.of(context).textTheme.headline1.color,
fontFamily: projectViewModel.isArabic ? 'Cairo' : 'WorkSans'), fontFamily: projectViewModel.isArabic ? 'Cairo' : 'WorkSans'),
// bold: true, // bold: true,
// color: Colors.white, // color: Colors.white,
@ -513,12 +473,12 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
currentTab == 0 currentTab == 0
? IconButton( ? IconButton(
icon: Icon(Icons.menu), icon: Icon(Icons.menu),
color: Colors.white, color: Theme.of(context).textTheme.headline1.color,
onPressed: () => Scaffold.of(context).openDrawer(), onPressed: () => Scaffold.of(context).openDrawer(),
) )
: IconButton( : IconButton(
icon: Icon(Icons.arrow_back), icon: Icon(Icons.arrow_back),
color: Colors.white, color: Theme.of(context).textTheme.headline1.color,
onPressed: () { onPressed: () {
setState(() { setState(() {
currentTab = 0; currentTab = 0;
@ -561,7 +521,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
//iconSize: 70, //iconSize: 70,
icon: Icon( icon: Icon(
projectViewModel.isLogin ? Icons.settings : Icons.login, projectViewModel.isLogin ? Icons.settings : Icons.login,
color: Colors.white, color: Theme.of(context).textTheme.headline1.color,
), ),
onPressed: () { onPressed: () {
if (projectViewModel.isLogin) if (projectViewModel.isLogin)

@ -353,6 +353,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
sendActivationCode(type) async { sendActivationCode(type) async {
var request = this.getCommonRequest(type: type); var request = this.getCommonRequest(type: type);
request.sMSSignature = await SMSOTP.getSignature();
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
await this.authService.sendActivationCode(request).then((result) { await this.authService.sendActivationCode(request).then((result) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);

@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/services/permission/permission_service.dart'; import 'package:diplomaticquarterapp/services/permission/permission_service.dart';
import 'package:diplomaticquarterapp/theme/theme_notifier.dart'; import 'package:diplomaticquarterapp/theme/theme_notifier.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart'; import 'package:diplomaticquarterapp/theme/theme_value.dart';
@ -39,15 +40,15 @@ class _GeneralSettings extends State<GeneralSettings>
return Container( return Container(
child: ListView(scrollDirection: Axis.vertical, children: <Widget>[ child: ListView(scrollDirection: Axis.vertical, children: <Widget>[
Container( Container(
color: Theme.of(context).primaryColor,
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: AppText( child: AppText(
TranslationBase.of(context).modes, TranslationBase.of(context).modes,
color: Colors.black,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
Container( Container(
color: Colors.white, color: Theme.of(context).primaryColor,
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -67,7 +68,7 @@ class _GeneralSettings extends State<GeneralSettings>
], ],
)), )),
Container( Container(
color: Colors.white, color: Theme.of(context).primaryColor,
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -87,15 +88,15 @@ class _GeneralSettings extends State<GeneralSettings>
], ],
)), )),
Container( Container(
color: Theme.of(context).primaryColor,
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: AppText( child: AppText(
TranslationBase.of(context).blindMode, TranslationBase.of(context).blindMode,
color: Colors.black,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
new Container( new Container(
color: Colors.white, color: Theme.of(context).primaryColor,
padding: EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),
child: new Column( child: new Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
@ -178,15 +179,15 @@ class _GeneralSettings extends State<GeneralSettings>
) )
])), ])),
Container( Container(
color: Theme.of(context).primaryColor,
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: AppText( child: AppText(
TranslationBase.of(context).permissions, TranslationBase.of(context).permissions,
color: Colors.black,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
Container( Container(
color: Colors.white, color: Theme.of(context).primaryColor,
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -205,7 +206,7 @@ class _GeneralSettings extends State<GeneralSettings>
], ],
)), )),
Container( Container(
color: Colors.white, color: Theme.of(context).primaryColor,
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -236,46 +237,9 @@ class _GeneralSettings extends State<GeneralSettings>
break; break;
case 1: case 1:
{ {
themeNotifier.setTheme(ThemeData( themeNotifier.setTheme(await getTheme(value));
//fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'ar' ? 'Cairo' : 'WorkSans',
primarySwatch: Colors.grey,
visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light,
pageTransitionsTheme: const PageTransitionsTheme(
builders: {
TargetPlatform.android: ZoomPageTransitionsBuilder(),
TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
},
),
hintColor: Colors.grey[400],
cardColor: Colors.black,
buttonColor: Colors.grey[400],
disabledColor: Colors.grey[300],
errorColor: Color.fromRGBO(235, 80, 60, 1.0),
scaffoldBackgroundColor: Colors.grey,
textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5),
textSelectionHandleColor: Colors.grey,
canvasColor: Colors.white,
backgroundColor: Colors.grey,
highlightColor: Colors.grey[100].withOpacity(0.4),
splashColor: Colors.transparent,
primaryColor: Colors.grey,
bottomSheetTheme:
BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)),
cursorColor: Colors.grey,
iconTheme: IconThemeData(),
appBarTheme: AppBarTheme(
color: Colors.grey,
brightness: Brightness.dark,
elevation: 10.0,
actionsIconTheme: IconThemeData(
color: Colors.grey,
),
),
));
Screen.setBrightness(1.0);
} }
break; break;
case 2: case 2:
themeNotifier.setTheme(await getTheme(value)); themeNotifier.setTheme(await getTheme(value));
@ -294,7 +258,7 @@ class _GeneralSettings extends State<GeneralSettings>
} }
break; break;
} }
//permission.setTheme(value); permission.setTheme(value);
} }
setVibration(value) { setVibration(value) {
@ -307,130 +271,28 @@ class _GeneralSettings extends State<GeneralSettings>
} }
getValues() async { getValues() async {
blindValue = if (permission.isThemeEnabled() != null) {
permission.isThemeEnabled() == null ? 0 : permission.isThemeEnabled(); blindValue =
vibration = permission.isVibrationEnabled() == null permission.isThemeEnabled() == null ? 0 : permission.isThemeEnabled();
? false vibration = permission.isVibrationEnabled() == null
: permission.isVibrationEnabled(); ? false
accsibility = mediaQueryData.accessibleNavigation; : permission.isVibrationEnabled();
accsibility = mediaQueryData.accessibleNavigation;
setTheme(blindValue);
}
} }
getTheme(value) async { getTheme(value) async {
if (value == 1) { if (value == 1) {
return ThemeData( return invertThemes();
// fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'ar' ? 'Cairo' : 'WorkSans',
primarySwatch: Colors.grey,
visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light,
pageTransitionsTheme: const PageTransitionsTheme(
builders: {
TargetPlatform.android: ZoomPageTransitionsBuilder(),
TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
},
),
hintColor: Colors.grey[400],
cardColor: Colors.black,
buttonColor: Colors.grey[400],
disabledColor: Colors.grey[300],
errorColor: Color.fromRGBO(235, 80, 60, 1.0),
scaffoldBackgroundColor: Colors.grey,
textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5),
textSelectionHandleColor: Colors.grey,
canvasColor: Colors.white,
backgroundColor: Colors.grey,
highlightColor: Colors.grey[100].withOpacity(0.4),
splashColor: Colors.transparent,
primaryColor: Colors.grey,
bottomSheetTheme:
BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)),
cursorColor: Colors.grey,
iconTheme: IconThemeData(),
appBarTheme: AppBarTheme(
color: Colors.grey,
brightness: Brightness.dark,
elevation: 10.0,
actionsIconTheme: IconThemeData(
color: Colors.grey,
),
),
);
} else if (value == 3) { } else if (value == 3) {
return ThemeData( return bwThemes();
// fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'ar' ? 'Cairo' : 'WorkSans',
primarySwatch: Colors.grey,
visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light,
pageTransitionsTheme: const PageTransitionsTheme(
builders: {
TargetPlatform.android: ZoomPageTransitionsBuilder(),
TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
},
),
hintColor: Colors.grey[400],
cardColor: Colors.black,
buttonColor: Colors.grey[400],
disabledColor: Colors.grey[300],
errorColor: Color.fromRGBO(235, 80, 60, 1.0),
scaffoldBackgroundColor: Colors.grey,
textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5),
textSelectionHandleColor: Colors.grey,
canvasColor: Colors.white,
backgroundColor: Colors.grey,
highlightColor: Colors.grey[100].withOpacity(0.4),
splashColor: Colors.transparent,
primaryColor: Colors.grey,
bottomSheetTheme:
BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)),
cursorColor: Colors.grey,
iconTheme: IconThemeData(),
appBarTheme: AppBarTheme(
color: Colors.black45,
brightness: Brightness.dark,
elevation: 10.0,
actionsIconTheme: IconThemeData(
color: Colors.grey,
),
),
);
} else { } else {
return ThemeData( return defaultTheme(
//fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'ar' ? 'Cairo' : 'WorkSans', fontName:
primarySwatch: Colors.blue, Provider.of<ProjectViewModel>(context, listen: false).isArabic
visualDensity: VisualDensity.adaptivePlatformDensity, ? 'Cairo'
brightness: Brightness.light, : 'WorkSans');
pageTransitionsTheme: const PageTransitionsTheme(
builders: {
TargetPlatform.android: ZoomPageTransitionsBuilder(),
TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
},
),
hintColor: Colors.grey[400],
disabledColor: Colors.grey[300],
errorColor: Color.fromRGBO(235, 80, 60, 1.0),
scaffoldBackgroundColor: Color(0xffEEEEEE),
textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5),
textSelectionHandleColor: Colors.grey,
canvasColor: Colors.white,
backgroundColor: Colors.white,
highlightColor: Colors.grey[100].withOpacity(0.4),
splashColor: Colors.transparent,
primaryColor: Color(0xff40ACC9),
bottomSheetTheme:
BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)),
cursorColor: Colors.grey,
cardColor: Colors.white,
iconTheme: IconThemeData(),
appBarTheme: AppBarTheme(
color: Color(0xff40ACC9),
brightness: Brightness.dark,
elevation: 10.0,
actionsIconTheme: IconThemeData(
color: Color(0xff40ACC9),
),
),
);
} }
} }
} }

@ -14,7 +14,6 @@ import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class ProfileSettings extends StatefulWidget { class ProfileSettings extends StatefulWidget {
@override @override
_ProfileSettings createState() => _ProfileSettings(); _ProfileSettings createState() => _ProfileSettings();
} }
@ -45,6 +44,7 @@ class _ProfileSettings extends State<ProfileSettings>
child: model.user != null child: model.user != null
? ListView(scrollDirection: Axis.vertical, children: <Widget>[ ? ListView(scrollDirection: Axis.vertical, children: <Widget>[
Container( Container(
color: Theme.of(context).primaryColor,
padding: EdgeInsets.all(15), padding: EdgeInsets.all(15),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -74,7 +74,7 @@ class _ProfileSettings extends State<ProfileSettings>
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
), ),
Container( Container(
color: Colors.white, color: Theme.of(context).primaryColor,
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: 0, left: 10, right: 10, bottom: 0), top: 0, left: 10, right: 10, bottom: 0),
child: Row( child: Row(
@ -93,7 +93,7 @@ class _ProfileSettings extends State<ProfileSettings>
], ],
)), )),
Container( Container(
color: Colors.white, color: Theme.of(context).primaryColor,
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: 0, left: 10, right: 10, bottom: 0), top: 0, left: 10, right: 10, bottom: 0),
child: Row( child: Row(
@ -116,7 +116,7 @@ class _ProfileSettings extends State<ProfileSettings>
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
), ),
Container( Container(
color: Colors.white, color: Theme.of(context).primaryColor,
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: 0, left: 10, right: 10, bottom: 0), top: 0, left: 10, right: 10, bottom: 0),
child: Row( child: Row(
@ -136,7 +136,7 @@ class _ProfileSettings extends State<ProfileSettings>
], ],
)), )),
Container( Container(
color: Colors.white, color: Theme.of(context).primaryColor,
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: 0, left: 10, right: 10, bottom: 0), top: 0, left: 10, right: 10, bottom: 0),
child: Row( child: Row(
@ -160,7 +160,7 @@ class _ProfileSettings extends State<ProfileSettings>
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
), ),
Container( Container(
color: Colors.white, color: Theme.of(context).primaryColor,
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: 0, left: 10, right: 10, bottom: 0), top: 0, left: 10, right: 10, bottom: 0),
child: Column( child: Column(
@ -175,7 +175,7 @@ class _ProfileSettings extends State<ProfileSettings>
], ],
)), )),
Container( Container(
color: Colors.white, color: Theme.of(context).primaryColor,
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: 0, left: 10, right: 10, bottom: 0), top: 0, left: 10, right: 10, bottom: 0),
child: Column( child: Column(
@ -190,7 +190,7 @@ class _ProfileSettings extends State<ProfileSettings>
], ],
)), )),
Container( Container(
color: Colors.white, color: Theme.of(context).primaryColor,
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: 0, left: 10, right: 10, bottom: 0), top: 0, left: 10, right: 10, bottom: 0),
child: Column( child: Column(

@ -21,7 +21,7 @@ class _Settings extends State<Settings> with TickerProviderStateMixin {
_tabController = _tabController =
new TabController(length: 2, vsync: this, initialIndex: widget.type); new TabController(length: 2, vsync: this, initialIndex: widget.type);
if(widget.type==1){ if (widget.type == 1) {
_tabController.animateTo(1); _tabController.animateTo(1);
} }
@ -51,7 +51,8 @@ class _Settings extends State<Settings> with TickerProviderStateMixin {
controller: _tabController, controller: _tabController,
), ),
title: Text(TranslationBase.of(context).settings, title: Text(TranslationBase.of(context).settings,
style: TextStyle(color: Colors.white)), style:
TextStyle(color: Theme.of(context).textTheme.bodyText2.color)),
leading: Builder( leading: Builder(
builder: (BuildContext context) { builder: (BuildContext context) {
return ArrowBack(); return ArrowBack();

@ -0,0 +1,11 @@
import 'package:flutter/material.dart';
class CustomColors {
static const Color lightPurple = Color(0xFFBB86FA);
static const Color purple = Color(0xFF6002EE);
static const Color deepPurple = Color(0xFF3900B1);
static const Color grey = Color(0xFF848484);
static const Color darkGrey = Color(0xFF222222);
static const Color black = Color(0xFF141414);
static const Color white = Color(0xFFFFFFFF);
}

@ -0,0 +1,3 @@
// import 'package:diplomaticquarterapp/theme/custom_theme.dart';
// CustomTheme currentTheme = CustomTheme();

@ -0,0 +1,89 @@
// import 'package:diplomaticquarterapp/Constants.dart';
// import 'package:flutter/material.dart';
// import 'package:hexcolor/hexcolor.dart';
// import 'colors.dart';
// class CustomTheme with ChangeNotifier {
// static bool _isDarkTheme = true;
// ThemeMode get currentTheme =>
// _isDarkTheme ? ThemeMode.dark : ThemeMode.system;
// void toggleTheme() {
// _isDarkTheme = !_isDarkTheme;
// notifyListeners();
// }
// static ThemeData get lightTheme {
// //1
// return ThemeData(
// //2
// primaryColor: CustomColors.purple,
// scaffoldBackgroundColor: Colors.white,
// fontFamily: 'Montserrat', //3
// buttonTheme: ButtonThemeData(
// // 4
// shape:
// RoundedRectangleBorder(borderRadius: BorderRadius.circular(18.0)),
// buttonColor: CustomColors.lightPurple,
// ));
// }
// static ThemeData get darkTheme {
// return ThemeData(
// primaryColor: CustomColors.darkGrey,
// scaffoldBackgroundColor: Colors.black,
// fontFamily: 'Montserrat',
// textTheme: ThemeData.dark().textTheme,
// buttonTheme: ButtonThemeData(
// shape:
// RoundedRectangleBorder(borderRadius: BorderRadius.circular(18.0)),
// buttonColor: CustomColors.lightPurple,
// ));
// }
// static ThemeData get defaultTheme {
// return ThemeData(
// // fontFamily: projectProvider.isArabic ? 'Cairo' : 'WorkSans',
// primarySwatch: Colors.blue,
// visualDensity: VisualDensity.adaptivePlatformDensity,
// brightness: Brightness.light,
// pageTransitionsTheme: const PageTransitionsTheme(
// builders: {
// TargetPlatform.android: ZoomPageTransitionsBuilder(),
// TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
// },
// ),
// hintColor: Colors.grey[400],
// textTheme: TextTheme(
// headline1: TextStyle(
// color: Color(0xffB8382C),
// ),
// ),
// disabledColor: Colors.grey[300],
// errorColor: Color.fromRGBO(235, 80, 60, 1.0),
// scaffoldBackgroundColor: Color(0xffE9E9E9), // Colors.grey[100],
// textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5),
// textSelectionHandleColor: Colors.grey,
// canvasColor: Colors.white,
// backgroundColor: Color.fromRGBO(255, 255, 255, 1),
// highlightColor: Colors.grey[100].withOpacity(0.4),
// splashColor: Colors.transparent,
// primaryColor: Color(0xff515A5D),
// toggleableActiveColor: secondaryColor,
// indicatorColor: secondaryColor,
// bottomSheetTheme:
// BottomSheetThemeData(backgroundColor: HexColor('#E0E0E0')),
// cursorColor: Colors.grey,
// iconTheme: IconThemeData(),
// appBarTheme: AppBarTheme(
// color: Color(0xff515A5D),
// brightness: Brightness.light,
// elevation: 0.0,
// actionsIconTheme: IconThemeData(
// color: Colors.grey[800],
// ),
// ),
// );
// }
// }

@ -1,15 +1,18 @@
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart'; import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:diplomaticquarterapp/config/config.dart';
class ThemeNotifier with ChangeNotifier { class ThemeNotifier with ChangeNotifier {
ThemeData _themeData = defaultTheme; ThemeData _themeData;
ThemeNotifier(this._themeData); ThemeNotifier(this._themeData);
getTheme() => _themeData; getTheme() => _themeData;
setTheme(ThemeData themeData) async { setTheme(ThemeData themeData) async {
_themeData = themeData; _themeData = themeData;
notifyListeners(); notifyListeners();
} }
} }

@ -1,9 +1,8 @@
import 'dart:ui'; import 'dart:ui';
import 'package:diplomaticquarterapp/Constants.dart';
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
/// ---- Default Theme ---- /// ---- Default Theme ----
@ -13,11 +12,11 @@ import 'package:provider/provider.dart';
final bluePrimary = Color(0xFF3F51B5); final bluePrimary = Color(0xFF3F51B5);
final blueAccent = Color(0xFFFF9800); final blueAccent = Color(0xFFFF9800);
final blueBackground = Color(0xFFFFFFFF); final blueBackground = Color(0xFFFFFFFF);
defaultTheme({fontName}) {
return ThemeData(
fontFamily: fontName, //projectProvider.isArabic ? 'Cairo' : 'WorkSans',
// ProjectViewModel projectProvider = Provider.of(AppGlobal.context); primarySwatch: Colors.blue,
final bwTheme = ThemeData(
//fontFamily: projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: Colors.grey,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light, brightness: Brightness.light,
pageTransitionsTheme: const PageTransitionsTheme( pageTransitionsTheme: const PageTransitionsTheme(
@ -27,37 +26,92 @@ final blueBackground = Color(0xFFFFFFFF);
}, },
), ),
hintColor: Colors.grey[400], hintColor: Colors.grey[400],
cardColor: Colors.black,
buttonColor: Colors.grey[400],
disabledColor: Colors.grey[300], disabledColor: Colors.grey[300],
errorColor: Color.fromRGBO(235, 80, 60, 1.0), errorColor: Color.fromRGBO(235, 80, 60, 1.0),
scaffoldBackgroundColor: Colors.grey, scaffoldBackgroundColor: Color(0xffE9E9E9), // Colors.grey[100],
textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5), textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5),
textSelectionHandleColor: Colors.grey, textSelectionHandleColor: Colors.grey,
canvasColor: Colors.white, canvasColor: Colors.white,
backgroundColor: Colors.grey, backgroundColor: Color.fromRGBO(255, 255, 255, 1),
highlightColor: Colors.grey[100].withOpacity(0.4), highlightColor: Colors.grey[100].withOpacity(0.4),
splashColor: Colors.transparent, splashColor: Colors.transparent,
primaryColor: Colors.grey, primaryColor: Color(0xffffffff),
bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)), toggleableActiveColor: secondaryColor,
indicatorColor: secondaryColor,
bottomSheetTheme:
BottomSheetThemeData(backgroundColor: HexColor('#E0E0E0')),
cursorColor: Colors.grey, cursorColor: Colors.grey,
primaryTextTheme: TextTheme(bodyText2: TextStyle(color: Colors.white)),
iconTheme: IconThemeData(),
textTheme: TextTheme(
bodyText1: TextStyle(color: Colors.black),
headline1: TextStyle(color: Colors.white),
),
appBarTheme: AppBarTheme(
color: Color(0xff515A5D),
brightness: Brightness.light,
elevation: 0.0,
actionsIconTheme: IconThemeData(
color: Colors.grey[800],
),
),
);
}
invertThemes({fontName}) {
return ThemeData(
fontFamily: fontName, //projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.dark,
pageTransitionsTheme: const PageTransitionsTheme(
builders: {
TargetPlatform.android: ZoomPageTransitionsBuilder(),
TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
},
),
hintColor: Colors.grey[400],
textTheme: TextTheme(
bodyText1: TextStyle(color: Colors.white),
headline1: TextStyle(color: Colors.white),
),
disabledColor: Colors.grey[800],
errorColor: Color.fromRGBO(235, 80, 60, 1.0),
scaffoldBackgroundColor: Color(0xff000000), // Colors.grey[100],
textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5),
textSelectionHandleColor: Colors.grey,
canvasColor: Colors.black,
backgroundColor: Color.fromRGBO(255, 255, 255, 1),
highlightColor: Colors.grey[100].withOpacity(0.4),
splashColor: Colors.transparent,
primaryColor: Color(0xff515A5D),
toggleableActiveColor: secondaryColor,
indicatorColor: secondaryColor,
bottomSheetTheme:
BottomSheetThemeData(backgroundColor: HexColor('#E0E0E0')),
cursorColor: Colors.black,
iconTheme: IconThemeData(), iconTheme: IconThemeData(),
appBarTheme: AppBarTheme( appBarTheme: AppBarTheme(
color: Colors.black45, color: Color(0xff000000),
brightness: Brightness.dark, brightness: Brightness.dark,
elevation: 10.0, elevation: 0.0,
actionsIconTheme: IconThemeData( actionsIconTheme: IconThemeData(
color: Colors.grey, color: Colors.grey[800],
), ),
), ),
); );
}
final defaultTheme = ThemeData( bwThemes({fontName}) {
//fontFamily: ProjectViewModel().isArabic? 'Cairo' : 'WorkSans', return ThemeData(
fontFamily: fontName, //projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: Colors.blue, primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light, brightness: Brightness.dark,
unselectedWidgetColor: Colors.red,
pageTransitionsTheme: const PageTransitionsTheme( pageTransitionsTheme: const PageTransitionsTheme(
builders: { builders: {
TargetPlatform.android: ZoomPageTransitionsBuilder(), TargetPlatform.android: ZoomPageTransitionsBuilder(),
@ -65,35 +119,50 @@ final blueBackground = Color(0xFFFFFFFF);
}, },
), ),
hintColor: Colors.grey[400], hintColor: Colors.grey[400],
disabledColor: Colors.grey[300],
textTheme: TextTheme(
bodyText1: TextStyle(color: Colors.red[900]),
headline1: TextStyle(color: Colors.red[900]),
bodyText2: TextStyle(color: Colors.red[900]),
subtitle1: TextStyle(color: Colors.red[900]),
),
tabBarTheme: TabBarTheme(labelColor: Colors.red[900]),
disabledColor: Colors.grey[800],
errorColor: Color.fromRGBO(235, 80, 60, 1.0), errorColor: Color.fromRGBO(235, 80, 60, 1.0),
scaffoldBackgroundColor: Color(0xffEEEEEE), scaffoldBackgroundColor: Color(0xffffffe4), // Colors.grey[100],
textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5), textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5),
textSelectionHandleColor: Colors.grey, textSelectionHandleColor: Colors.grey,
canvasColor: Colors.white, canvasColor: Colors.black,
backgroundColor: Colors.white, backgroundColor: Color(0xffffffe4),
highlightColor: Colors.grey[100].withOpacity(0.4), highlightColor: Colors.grey[100].withOpacity(0.4),
splashColor: Colors.transparent, splashColor: Colors.transparent,
primaryColor: Color(0xff40ACC9), primaryColor: Color(0xfffffff4),
bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)), toggleableActiveColor: secondaryColor,
cursorColor: Colors.grey, indicatorColor: secondaryColor,
cardColor: Colors.white, bottomSheetTheme:
BottomSheetThemeData(backgroundColor: HexColor('#E0E0E0')),
cursorColor: Colors.black,
iconTheme: IconThemeData(), iconTheme: IconThemeData(),
appBarTheme: AppBarTheme( appBarTheme: AppBarTheme(
color: Color(0xff40ACC9), color: Color(0xffffffe4),
brightness: Brightness.dark, brightness: Brightness.dark,
elevation: 10.0, elevation: 0.0,
actionsIconTheme: IconThemeData( actionsIconTheme: IconThemeData(
color: Color(0xff40ACC9), color: Colors.grey[800],
), ),
), ),
); );
}
final invertTheme = ThemeData( dimTheme({fontName}) {
//fontFamily: projectProvider.isArabic ? 'Cairo' : 'WorkSans', return ThemeData(
primarySwatch: Colors.grey, fontFamily: fontName, //projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light, brightness: Brightness.dark,
pageTransitionsTheme: const PageTransitionsTheme( pageTransitionsTheme: const PageTransitionsTheme(
builders: { builders: {
TargetPlatform.android: ZoomPageTransitionsBuilder(), TargetPlatform.android: ZoomPageTransitionsBuilder(),
@ -101,29 +170,26 @@ final blueBackground = Color(0xFFFFFFFF);
}, },
), ),
hintColor: Colors.grey[400], hintColor: Colors.grey[400],
cardColor: Colors.black,
buttonColor: Colors.grey[400],
disabledColor: Colors.grey[300], disabledColor: Colors.grey[300],
errorColor: Color.fromRGBO(235, 80, 60, 1.0), errorColor: Color.fromRGBO(235, 80, 60, 1.0),
scaffoldBackgroundColor: Colors.grey, scaffoldBackgroundColor: Color(0xffEEEEEE),
textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5), textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5),
textSelectionHandleColor: Colors.grey, textSelectionHandleColor: Colors.grey,
canvasColor: Colors.white, canvasColor: Colors.white,
backgroundColor: Colors.grey, backgroundColor: Color.fromRGBO(255, 255, 255, 1),
highlightColor: Colors.grey[100].withOpacity(0.4), highlightColor: Colors.grey[100].withOpacity(0.4),
splashColor: Colors.transparent, splashColor: Colors.transparent,
primaryColor: Colors.grey, primaryColor: Color(0xff40ACC9),
bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)), bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)),
cursorColor: Colors.grey, cursorColor: Colors.grey,
iconTheme: IconThemeData(), iconTheme: IconThemeData(),
appBarTheme: AppBarTheme( appBarTheme: AppBarTheme(
color: Colors.grey, color: Color(0xff40ACC9),
brightness: Brightness.dark, brightness: Brightness.dark,
elevation: 10.0, elevation: 10.0,
actionsIconTheme: IconThemeData( actionsIconTheme: IconThemeData(
color: Colors.grey, color: Color(0xff40ACC9),
), ),
), ),
); );
}

@ -230,7 +230,8 @@ class _TextsState extends State<Texts> {
fontSize: widget.fontSize ?? _getFontSize(), fontSize: widget.fontSize ?? _getFontSize(),
letterSpacing: widget.variant == "overline" ? 1 : null, letterSpacing: widget.variant == "overline" ? 1 : null,
fontWeight: widget.fontWeight ?? _getFontWeight(), fontWeight: widget.fontWeight ?? _getFontWeight(),
), fontFamily:
projectViewModel.isArabic ? 'Cairo' : 'WorkSans'),
), ),
if (widget.readMore && text.length > widget.maxLength && hidden) if (widget.readMore && text.length > widget.maxLength && hidden)
Positioned( Positioned(

@ -344,6 +344,16 @@ class _AppDrawerState extends State<AppDrawer> {
login(); login();
}, },
), ),
// InkWell(
// child: DrawerItem(
// TranslationBase.of(context).appsetting,
// Icons.settings_input_composite),
// onTap: () {
// Navigator.of(context).pushNamed(
// SETTINGS,
// );
// },
// )
], ],
) )
], ],

@ -2,6 +2,7 @@ import 'dart:ui';
import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
/// ///
@ -15,8 +16,8 @@ class DrawerItem extends StatefulWidget {
final bool sideArrow; final bool sideArrow;
final Widget count; final Widget count;
DrawerItem(this.title, this.icon, DrawerItem(this.title, this.icon,
{this.textColor = Colors.black, {this.textColor,
this.iconColor = Colors.black87, this.iconColor,
this.subTitle = '', this.subTitle = '',
this.bottomLine = true, this.bottomLine = true,
this.count, this.count,
@ -48,7 +49,9 @@ class _DrawerItemState extends State<DrawerItem> {
flex: 1, flex: 1,
child: Icon( child: Icon(
widget.icon, widget.icon,
color: widget.iconColor, color: widget.iconColor == null
? Theme.of(context).textTheme.bodyText1.color
: widget.iconColor,
size: SizeConfig.imageSizeMultiplier * 5, size: SizeConfig.imageSizeMultiplier * 5,
)), )),
Expanded( Expanded(
@ -59,18 +62,16 @@ class _DrawerItemState extends State<DrawerItem> {
children: <Widget>[ children: <Widget>[
Row( Row(
children: [ children: [
Texts( AppText(
widget.title, widget.title,
color: widget.textColor,
fontSize: SizeConfig.textMultiplier * 2.3, fontSize: SizeConfig.textMultiplier * 2.3,
), ),
widget.count ?? SizedBox(), widget.count ?? SizedBox(),
], ],
), ),
widget.subTitle != '' widget.subTitle != ''
? Texts( ? AppText(
widget.subTitle, widget.subTitle,
color: widget.textColor,
fontSize: SizeConfig.textMultiplier * 2.5, fontSize: SizeConfig.textMultiplier * 2.5,
) )
: SizedBox(), : SizedBox(),

@ -148,7 +148,9 @@ class AppBarWidget extends StatelessWidget with PreferredSizeWidget {
backgroundColor: backgroundColor:
isPharmacy ? Colors.green : Theme.of(context).appBarTheme.color, isPharmacy ? Colors.green : Theme.of(context).appBarTheme.color,
textTheme: TextTheme( textTheme: TextTheme(
headline6: TextStyle(color: Colors.white, fontWeight: FontWeight.bold), headline6: TextStyle(
color: Theme.of(context).textTheme.headline1.color,
fontWeight: FontWeight.bold),
), ),
title: Text( title: Text(
authenticatedUserObject.isLogin || !isShowDecPage authenticatedUserObject.isLogin || !isShowDecPage
@ -156,7 +158,7 @@ class AppBarWidget extends StatelessWidget with PreferredSizeWidget {
: TranslationBase.of(context).serviceInformationTitle, : TranslationBase.of(context).serviceInformationTitle,
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: Colors.white, color: Theme.of(context).textTheme.headline1.color,
fontFamily: projectViewModel.isArabic ? 'Cairo' : 'WorkSans')), fontFamily: projectViewModel.isArabic ? 'Cairo' : 'WorkSans')),
leading: Builder( leading: Builder(
builder: (BuildContext context) { builder: (BuildContext context) {
@ -168,14 +170,14 @@ class AppBarWidget extends StatelessWidget with PreferredSizeWidget {
isPharmacy isPharmacy
? IconButton( ? IconButton(
icon: Icon(Icons.shopping_cart), icon: Icon(Icons.shopping_cart),
color: Colors.white, color: Theme.of(context).textTheme.headline1.color,
onPressed: () { onPressed: () {
Navigator.of(context).popUntil(ModalRoute.withName('/')); Navigator.of(context).popUntil(ModalRoute.withName('/'));
}) })
: Container(), : Container(),
IconButton( IconButton(
icon: Icon(FontAwesomeIcons.home), icon: Icon(FontAwesomeIcons.home),
color: Colors.white, color: Theme.of(context).textTheme.headline1.color,
onPressed: () { onPressed: () {
Navigator.pushAndRemoveUntil( Navigator.pushAndRemoveUntil(
context, context,

@ -16,7 +16,8 @@ class ArrowBack extends StatelessWidget {
onTap: Feedback.wrapForTap(() { onTap: Feedback.wrapForTap(() {
onTap != null ? onTap() : Navigator.pop(context); onTap != null ? onTap() : Navigator.pop(context);
}, context), }, context),
child: Icon(Icons.arrow_back_ios, color: Colors.white), child: Icon(Icons.arrow_back_ios,
color: Theme.of(context).textTheme.headline1.color),
); );
} }
} }

@ -1017,13 +1017,20 @@ class _MyStatefulBuilderState extends State<MyStatefulBuilder> {
Expanded( Expanded(
flex: 1, flex: 1,
child: Center( child: Center(
child: Text(searchText != null && searchText != 'null' child: Image.asset(
'assets/images/soundWaveAnimation.gif',
height: 75,
))),
Expanded(
flex: 1,
child: Center(
child: AppText(searchText != null && searchText != 'null'
? searchText ? searchText
: TranslationBase.of(context).trySaying))), : TranslationBase.of(context).trySaying))),
searchText == 'null' searchText == 'null'
? Center( ? Center(
child: RaisedButton( child: RaisedButton(
child: Text('Retry'), child: AppText('Retry'),
onPressed: () { onPressed: () {
RoboSearch.closeAlertDialog(context); RoboSearch.closeAlertDialog(context);
event.setValue({'startPopUp': 'true'}); event.setValue({'startPopUp': 'true'});

@ -9,6 +9,8 @@ import 'dart:math';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:sms_otp_auto_verify/sms_otp_auto_verify.dart';
class SMSOTP { class SMSOTP {
final type; final type;
final mobileNo; final mobileNo;
@ -52,9 +54,10 @@ class SMSOTP {
String errorMsg; String errorMsg;
ProjectViewModel projectProvider; ProjectViewModel projectProvider;
String displayTime = ''; String displayTime = '';
String _code;
dynamic setState;
static String signature;
displayDialog(BuildContext context) async { displayDialog(BuildContext context) async {
return showDialog( return showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
@ -78,10 +81,11 @@ class SMSOTP {
if (displayTime == '') { if (displayTime == '') {
startTimer(setState); startTimer(setState);
} }
return Container( return Container(
color: Colors.white, color: Colors.white,
height: SizeConfig.realScreenHeight * 0.5, height: SizeConfig.realScreenHeight * 0.5,
width: SizeConfig.realScreenWidth * 0.8, width: SizeConfig.realScreenWidth,
child: Center( child: Center(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
@ -99,121 +103,151 @@ class SMSOTP {
.substring(mobileNo.toString().length - 3), .substring(mobileNo.toString().length - 3),
textAlign: TextAlign.center, textAlign: TextAlign.center,
)), )),
Form(
key: verifyAccountForm, Directionality(
child: Padding( textDirection: TextDirection.ltr,
padding: EdgeInsets.only(top: 20), child: TextFieldPin(
child: Directionality( filled: true,
textDirection:TextDirection.ltr, filledColor: Colors.grey[100],
child:Row( codeLength: 4,
mainAxisAlignment: MainAxisAlignment.spaceAround, filledAfterTextChange: true,
children: <Widget>[ boxSize: 50,
Container( margin: 10,
width: SizeConfig.realScreenWidth * 0.15, borderStyeAfterTextChange: OutlineInputBorder(
child: TextFormField( borderRadius: BorderRadius.all(Radius.circular(10)),
textInputAction: TextInputAction.next, borderSide: BorderSide(color: Colors.black),
style: buildTextStyle(), ),
autofocus: true, borderStyle: OutlineInputBorder(
maxLength: 1, borderRadius: BorderRadius.all(Radius.circular(10)),
controller: digit1, borderSide: BorderSide(color: Colors.black),
textAlign: TextAlign.center, ),
keyboardType: TextInputType.number, onOtpCallback: (code, isAutofill) =>
decoration: buildInputDecoration(context), _onOtpCallBack(code, isAutofill),
onSaved: (val) {},
validator: validateCodeDigit,
onFieldSubmitted: (_) {
FocusScope.of(context).requestFocus(focusD2);
},
onChanged: (val) {
if (val.length == 1) {
FocusScope.of(context)
.requestFocus(focusD2);
verifyAccountFormValue['digit1'] =
val.trim();
checkValue();
}
},
),
),
Container(
width: SizeConfig.realScreenWidth * 0.15,
child: TextFormField(
focusNode: focusD2,
textInputAction: TextInputAction.next,
maxLength: 1,
controller: digit2,
textAlign: TextAlign.center,
style: buildTextStyle(),
keyboardType: TextInputType.number,
decoration: buildInputDecoration(context),
onSaved: (val) {},
onFieldSubmitted: (_) {
FocusScope.of(context)
.requestFocus(focusD3);
},
onChanged: (val) {
if (val.length == 1) {
FocusScope.of(context)
.requestFocus(focusD3);
verifyAccountFormValue['digit2'] =
val.trim();
checkValue();
}
},
validator: validateCodeDigit),
),
Container(
width: SizeConfig.realScreenWidth * 0.15,
child: TextFormField(
focusNode: focusD3,
textInputAction: TextInputAction.next,
maxLength: 1,
controller: digit3,
textAlign: TextAlign.center,
style: buildTextStyle(),
keyboardType: TextInputType.number,
decoration: buildInputDecoration(context),
onSaved: (val) {},
onFieldSubmitted: (_) {
FocusScope.of(context)
.requestFocus(focusD4);
},
onChanged: (val) {
if (val.length == 1) {
FocusScope.of(context)
.requestFocus(focusD4);
verifyAccountFormValue['digit3'] =
val.trim();
checkValue();
}
},
validator: validateCodeDigit)),
Container(
width: SizeConfig.realScreenWidth * 0.15,
child: TextFormField(
focusNode: focusD4,
maxLength: 1,
textAlign: TextAlign.center,
style: buildTextStyle(),
controller: digit4,
keyboardType: TextInputType.number,
decoration: buildInputDecoration(context),
onFieldSubmitted: (_) {
FocusScope.of(context)
.requestFocus(focusD4);
},
onChanged: (val) {
if (val.length == 1) {
verifyAccountFormValue['digit4'] =
val.trim();
checkValue();
}
},
validator: validateCodeDigit)),
],
)), )),
), // Form(
), // key: verifyAccountForm,
// child: Padding(
// padding: EdgeInsets.only(top: 20),
// child: Directionality(
// textDirection: TextDirection.ltr,
// child:
// // Row(
// mainAxisAlignment: MainAxisAlignment.spaceAround,
// children: <Widget>[
// Container(
// child: ,
// )
// Container(
// width: SizeConfig.realScreenWidth * 0.15,
// child: TextFormField(
// textInputAction: TextInputAction.next,
// style: buildTextStyle(),
// autofocus: true,
// maxLength: 1,
// controller: digit1,
// textAlign: TextAlign.center,
// keyboardType: TextInputType.number,
// decoration: buildInputDecoration(context),
// onSaved: (val) {},
// validator: validateCodeDigit,
// onFieldSubmitted: (_) {
// FocusScope.of(context)
// .requestFocus(focusD2);
// },
// onChanged: (val) {
// if (val.length == 1) {
// FocusScope.of(context)
// .requestFocus(focusD2);
// verifyAccountFormValue['digit1'] =
// val.trim();
// checkValue();
// }
// },
// ),
// ),
// Container(
// width: SizeConfig.realScreenWidth * 0.15,
// child: TextFormField(
// focusNode: focusD2,
// textInputAction: TextInputAction.next,
// maxLength: 1,
// controller: digit2,
// textAlign: TextAlign.center,
// style: buildTextStyle(),
// keyboardType: TextInputType.number,
// decoration: buildInputDecoration(context),
// onSaved: (val) {},
// onFieldSubmitted: (_) {
// FocusScope.of(context)
// .requestFocus(focusD3);
// },
// onChanged: (val) {
// if (val.length == 1) {
// FocusScope.of(context)
// .requestFocus(focusD3);
// verifyAccountFormValue['digit2'] =
// val.trim();
// checkValue();
// }
// },
// validator: validateCodeDigit),
// ),
// Container(
// width: SizeConfig.realScreenWidth * 0.15,
// child: TextFormField(
// focusNode: focusD3,
// textInputAction: TextInputAction.next,
// maxLength: 1,
// controller: digit3,
// textAlign: TextAlign.center,
// style: buildTextStyle(),
// keyboardType: TextInputType.number,
// decoration:
// buildInputDecoration(context),
// onSaved: (val) {},
// onFieldSubmitted: (_) {
// FocusScope.of(context)
// .requestFocus(focusD4);
// },
// onChanged: (val) {
// if (val.length == 1) {
// FocusScope.of(context)
// .requestFocus(focusD4);
// verifyAccountFormValue['digit3'] =
// val.trim();
// checkValue();
// }
// },
// validator: validateCodeDigit)),
// Container(
// width: SizeConfig.realScreenWidth * 0.15,
// child: TextFormField(
// focusNode: focusD4,
// maxLength: 1,
// textAlign: TextAlign.center,
// style: buildTextStyle(),
// controller: digit4,
// keyboardType: TextInputType.number,
// decoration:
// buildInputDecoration(context),
// onFieldSubmitted: (_) {
// FocusScope.of(context)
// .requestFocus(focusD4);
// },
// onChanged: (val) {
// if (val.length == 1) {
// verifyAccountFormValue['digit4'] =
// val.trim();
// checkValue();
// }
// },
// validator: validateCodeDigit)),
// ],
//)),
//),
//),
SizedBox(height: 20),
Padding( Padding(
padding: EdgeInsets.only(top: 10), padding: EdgeInsets.only(top: 10),
child: AppText( child: AppText(
@ -274,9 +308,11 @@ class SMSOTP {
checkValue() { checkValue() {
//print(verifyAccountFormValue); //print(verifyAccountFormValue);
if (verifyAccountForm.currentState.validate()) { if (verifyAccountForm.currentState.validate()) {
onSuccess(digit1.text.toString()+digit2.text.toString()+digit3.text.toString()+digit4.text.toString()); onSuccess(digit1.text.toString() +
digit2.text.toString() +
digit3.text.toString() +
digit4.text.toString());
} }
} }
getSecondsAsDigitalClock(int inputSeconds) { getSecondsAsDigitalClock(int inputSeconds) {
@ -311,7 +347,7 @@ class SMSOTP {
static void showLoadingDialog(BuildContext context, bool _loading) async { static void showLoadingDialog(BuildContext context, bool _loading) async {
_context = context; _context = context;
//setSignature();
if (_loading == false) { if (_loading == false) {
Navigator.of(context).pop(); Navigator.of(context).pop();
return; return;
@ -338,4 +374,14 @@ class SMSOTP {
static void hideSMSBox(context) { static void hideSMSBox(context) {
Navigator.pop(context); Navigator.pop(context);
} }
_onOtpCallBack(String otpCode, bool isAutofill) {
if (otpCode.length == 4) {
onSuccess(otpCode);
}
}
static getSignature() async {
return await SmsRetrieved.getAppSignature();
}
} }

@ -1,6 +1,8 @@
import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
// OWNER : Ibrahim albitar // OWNER : Ibrahim albitar
// DATE : 12-04-2020 // DATE : 12-04-2020
@ -22,11 +24,11 @@ class AppText extends StatefulWidget {
final Color backGroundcolor; final Color backGroundcolor;
final bool underline; final bool underline;
AppText(this.data, AppText(this.data,
{this.color = Colors.black, {this.color,
this.fontWeight = FontWeight.normal, this.fontWeight = FontWeight.normal,
this.fontSize, this.fontSize,
// this.fontFamily = 'WorkSans', // this.fontFamily = 'WorkSans',
this.fontFamily, this.fontFamily,
this.margin, this.margin,
this.marginTop = 0, this.marginTop = 0,
this.marginRight = 0, this.marginRight = 0,
@ -44,6 +46,7 @@ class AppText extends StatefulWidget {
class _AppTextState extends State<AppText> { class _AppTextState extends State<AppText> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return Visibility( return Visibility(
visible: widget.visibility, visible: widget.visibility,
child: Container( child: Container(
@ -59,10 +62,16 @@ class _AppTextState extends State<AppText> {
textAlign: widget.textAlign, textAlign: widget.textAlign,
overflow: TextOverflow.clip, overflow: TextOverflow.clip,
style: TextStyle( style: TextStyle(
color: widget.color, color: widget.color == null
? Theme.of(context).textTheme.bodyText1.color
: widget.color,
fontWeight: widget.fontWeight, fontWeight: widget.fontWeight,
fontSize: widget.fontSize ?? (SizeConfig.textMultiplier * 2), fontSize: widget.fontSize ?? (SizeConfig.textMultiplier * 2),
fontFamily: widget.fontFamily, fontFamily: widget.fontFamily == null
? projectViewModel.isArabic
? 'Cairo'
: 'WorkSans'
: widget.fontFamily,
decoration: widget.underline == true decoration: widget.underline == true
? TextDecoration.underline ? TextDecoration.underline
: TextDecoration.none : TextDecoration.none

@ -1,3 +1,4 @@
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class TyperAnimatedTextKit extends StatefulWidget { class TyperAnimatedTextKit extends StatefulWidget {
@ -64,9 +65,9 @@ class _TyperState extends State<TyperAnimatedTextKit>
animation: _characterCount, animation: _characterCount,
builder: (BuildContext context, Widget child) { builder: (BuildContext context, Widget child) {
String text = widget.text.substring(0, _characterCount.value); String text = widget.text.substring(0, _characterCount.value);
return Text( return AppText(
text, text,
style: TextStyle(color: Colors.black, fontSize: 12), fontSize: 12,
textAlign: TextAlign.start, textAlign: TextAlign.start,
); );
}, },

@ -87,7 +87,7 @@ dependencies:
# Qr code Scanner TODO fix it # Qr code Scanner TODO fix it
# barcode_scanner: ^1.0.1 # barcode_scanner: ^1.0.1
barcode_scan: any barcode_scan: ^2.0.0
flutter_polyline_points: ^0.1.0 flutter_polyline_points: ^0.1.0
location: ^2.3.5 location: ^2.3.5
# Qr code Scanner # Qr code Scanner
@ -169,7 +169,7 @@ dependencies:
flutter_tts: flutter_tts:
path: flutter_tts-voice_enhancement path: flutter_tts-voice_enhancement
# flutter_tts: ^1.2.6 # flutter_tts: ^1.2.6
sms_otp_auto_verify: ^1.2.2
wifi: ^0.1.5 wifi: ^0.1.5
vibration: ^1.7.3 vibration: ^1.7.3

Loading…
Cancel
Save