mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2026-10-24 17:07:56 +00:00
initialized Application theme
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
// ignore_for_file: avoid_print
|
||||
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
|
||||
class MyBlocObserver extends BlocObserver {
|
||||
@override
|
||||
void onCreate(BlocBase bloc) {
|
||||
super.onCreate(bloc);
|
||||
print('onCreate -- ${bloc.runtimeType}');
|
||||
}
|
||||
|
||||
@override
|
||||
void onChange(BlocBase bloc, Change change) {
|
||||
super.onChange(bloc, change);
|
||||
print('onChange -- ${bloc.runtimeType}, $change');
|
||||
}
|
||||
|
||||
@override
|
||||
void onError(BlocBase bloc, Object error, StackTrace stackTrace) {
|
||||
print('onError -- ${bloc.runtimeType}, $error');
|
||||
super.onError(bloc, error, stackTrace);
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose(BlocBase bloc) {
|
||||
super.onClose(bloc);
|
||||
print('onClose -- ${bloc.runtimeType}');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class CacheHelper {
|
||||
static late SharedPreferences sharedPreferences;
|
||||
|
||||
static init() async {
|
||||
sharedPreferences = await SharedPreferences.getInstance();
|
||||
}
|
||||
|
||||
static Object? getData({
|
||||
required String key,
|
||||
}) async {
|
||||
return sharedPreferences.get(key);
|
||||
}
|
||||
|
||||
static Future setData({
|
||||
required String key,
|
||||
required value,
|
||||
}) async {
|
||||
if (value is String) return await sharedPreferences.setString(key, value);
|
||||
if (value is int) return await sharedPreferences.setInt(key, value);
|
||||
if (value is bool) return await sharedPreferences.setBool(key, value);
|
||||
return await sharedPreferences.setDouble(key, value);
|
||||
}
|
||||
|
||||
static dynamic removeData({
|
||||
required String key,
|
||||
}) async {
|
||||
return sharedPreferences.remove(key);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
// import 'dart:io';
|
||||
// import 'dart:math';
|
||||
// import 'package:dio/dio.dart';
|
||||
// import 'package:file_picker/file_picker.dart';
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:flutter/services.dart';
|
||||
//
|
||||
// import 'package:path_provider/path_provider.dart';
|
||||
//
|
||||
// class FileHelper {
|
||||
// static Future<Map<String, Uint8List>> takePicture() async {
|
||||
// try {
|
||||
// XFile? pickedImage = await ImagePicker().pickImage(source: ImageSource.camera);
|
||||
// if (pickedImage != null) {
|
||||
// final fileTemp = File(pickedImage.path);
|
||||
// final bytes = fileTemp.readAsBytesSync();
|
||||
// return {pickedImage.path: bytes};
|
||||
// } else {
|
||||
// return {};
|
||||
// }
|
||||
// } on PlatformException catch (_) {
|
||||
// return {};
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// static Future<Map<String, Uint8List>> pickFile({bool gallery = false}) async {
|
||||
// try {
|
||||
// FilePickerResult? pickedFile;
|
||||
// XFile? pickedFromGallery;
|
||||
// if (gallery) {
|
||||
// final picker = ImagePicker();
|
||||
// pickedFromGallery =
|
||||
// await picker.pickImage(source: ImageSource.gallery, requestFullMetadata: false);
|
||||
// } else {
|
||||
// pickedFile = await FilePicker.platform.pickFiles(
|
||||
// allowedExtensions: ['png', 'jpg', 'jpeg', 'pdf'],
|
||||
// type: FileType.custom,
|
||||
// withReadStream: true,
|
||||
// );
|
||||
// }
|
||||
// if (pickedFile != null) {
|
||||
// String path = pickedFile.files.single.path ?? '';
|
||||
// final fileTemp = File(path);
|
||||
// final bytes = fileTemp.readAsBytesSync();
|
||||
// if (path.isEmpty) {
|
||||
// return {};
|
||||
// }
|
||||
// return {path: bytes};
|
||||
// } else if (pickedFromGallery != null) {
|
||||
// String path = pickedFromGallery.path;
|
||||
// final fileTemp = File(path);
|
||||
// final bytes = fileTemp.readAsBytesSync();
|
||||
// if (path.isEmpty) {
|
||||
// return {};
|
||||
// }
|
||||
// return {path: bytes};
|
||||
// } else {
|
||||
// return {};
|
||||
// }
|
||||
// } on PlatformException catch (_) {
|
||||
// return {};
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// Future<String> downloadFile(String url) async {
|
||||
// String filePath;
|
||||
// try {
|
||||
// filePath = await _prepareSaveDir(url);
|
||||
// await HTTPService()
|
||||
// .downloadRequest(path: url, savePath: filePath, expectedResponseModel: (json) {});
|
||||
// } catch (err) {
|
||||
// CustomSnackBar.displaySnackBar('Something went wrong please try again!');
|
||||
// return '';
|
||||
// }
|
||||
// return filePath;
|
||||
// }
|
||||
//
|
||||
// String getRandomString(int length) {
|
||||
// const chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
|
||||
// Random rnd = Random();
|
||||
//
|
||||
// return String.fromCharCodes(
|
||||
// Iterable.generate(length, (_) => chars.codeUnitAt(rnd.nextInt(chars.length))));
|
||||
// }
|
||||
//
|
||||
// Future<String> _prepareSaveDir(String url) async {
|
||||
// try {
|
||||
// final localPath = (await _findLocalPath(url))!;
|
||||
//
|
||||
// final savedDir = Directory(localPath);
|
||||
// bool hasExisted = await savedDir.exists();
|
||||
// if (!hasExisted) {
|
||||
// await File(savedDir.path).create();
|
||||
// }
|
||||
// return savedDir.path;
|
||||
// } catch (err) {
|
||||
// return '';
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// Future<String?> _findLocalPath(String url) async {
|
||||
// String fileName = getRandomString(10);
|
||||
// String fileNameWithExtension = url.contains('pdf') ? '$fileName.pdf' : '$fileName.jpeg';
|
||||
//
|
||||
// if (Platform.isAndroid) {
|
||||
// return "/sdcard/download/$fileNameWithExtension";
|
||||
// } else {
|
||||
// var directory = await getApplicationDocumentsDirectory();
|
||||
// return '${directory.path}${Platform.pathSeparator}$fileNameWithExtension';
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// static Future<Uint8List?> fetchPdfContent(final String url) async {
|
||||
// try {
|
||||
// final Response<List<int>> response = await Dio().get<List<int>>(
|
||||
// url,
|
||||
// options: Options(responseType: ResponseType.bytes),
|
||||
// );
|
||||
// return Uint8List.fromList(response.data ?? []);
|
||||
// } catch (e) {
|
||||
// debugPrint(e.toString());
|
||||
// return null;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
@@ -0,0 +1,35 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class LifecycleEventHandler extends WidgetsBindingObserver {
|
||||
final AsyncCallback resumeCallBack;
|
||||
final AsyncCallback suspendingCallBack;
|
||||
final AsyncCallback onPauseCallBack;
|
||||
final AsyncCallback inactiveCallBack;
|
||||
|
||||
LifecycleEventHandler(
|
||||
{required this.resumeCallBack,
|
||||
required this.suspendingCallBack,
|
||||
required this.onPauseCallBack,
|
||||
required this.inactiveCallBack});
|
||||
|
||||
@override
|
||||
Future<void> didChangeAppLifecycleState(AppLifecycleState state) async {
|
||||
switch (state) {
|
||||
case AppLifecycleState.resumed:
|
||||
await resumeCallBack();
|
||||
break;
|
||||
case AppLifecycleState.inactive:
|
||||
await inactiveCallBack();
|
||||
break;
|
||||
case AppLifecycleState.paused:
|
||||
await onPauseCallBack();
|
||||
break;
|
||||
case AppLifecycleState.detached:
|
||||
await suspendingCallBack();
|
||||
break;
|
||||
case AppLifecycleState.hidden:
|
||||
// TODO: Handle this case.
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class LocalizationService {
|
||||
static saveLocale(Locale locale) async {
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setString("Locale Language Code", locale.languageCode);
|
||||
if (locale.countryCode != null) {
|
||||
await prefs.setString("Locale Country Code", locale.countryCode!);
|
||||
}
|
||||
}
|
||||
|
||||
static Future<Locale> savedLocale() async {
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
// var savedLanguageCode = prefs.getString(Constants.languageCode);
|
||||
// var savedCountryCode = prefs.getString(Constants.countryCode);
|
||||
var savedLocale = const Locale("ar", "JO");
|
||||
|
||||
// if (savedCountryCode != null && savedLanguageCode != null) {
|
||||
// savedLocale = Locale(savedLanguageCode, savedCountryCode);
|
||||
// }
|
||||
|
||||
return savedLocale;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class StringHelpers {
|
||||
// TODO ( to Mohammad Salameh): convert this to extension method
|
||||
static String enhanceFileName(File file) {
|
||||
var fileName = " ";
|
||||
final filePath = file.path;
|
||||
debugPrint(filePath);
|
||||
final fileStringArray = filePath.split("/");
|
||||
fileName = fileStringArray.last;
|
||||
if (fileName.length > 20) {
|
||||
// crop the name and keep the extension
|
||||
final firstPart = fileName.substring(0, 17);
|
||||
fileName = "$firstPart...";
|
||||
}
|
||||
return fileName;
|
||||
}
|
||||
|
||||
static String returnEnglishStringFromArabicNumber(String arabicString) {
|
||||
var englishStringNumber = arabicString;
|
||||
englishStringNumber = englishStringNumber.replaceAll("٠", "0");
|
||||
englishStringNumber = englishStringNumber.replaceAll("١", "1");
|
||||
englishStringNumber = englishStringNumber.replaceAll("٢", "2");
|
||||
englishStringNumber = englishStringNumber.replaceAll("٣", "3");
|
||||
englishStringNumber = englishStringNumber.replaceAll("٤", "4");
|
||||
englishStringNumber = englishStringNumber.replaceAll("٥", "5");
|
||||
englishStringNumber = englishStringNumber.replaceAll("٦", "6");
|
||||
englishStringNumber = englishStringNumber.replaceAll("٧", "7");
|
||||
englishStringNumber = englishStringNumber.replaceAll("٨", "8");
|
||||
englishStringNumber = englishStringNumber.replaceAll("٩", "9");
|
||||
return englishStringNumber;
|
||||
}
|
||||
|
||||
static String returnTheFirstThreeWords(String completeString) {
|
||||
// We use this method to return a nice readable word that is shorter than 26 characters
|
||||
// split the string to substrings with the space as the pattern
|
||||
final arrayOfSubStrings = completeString.split(" ");
|
||||
String newString = "";
|
||||
// keep adding the substrings until 26 is reached
|
||||
var index = 0;
|
||||
while (newString.length < 20 && index < arrayOfSubStrings.length) {
|
||||
newString = "$newString + ${arrayOfSubStrings[index]} ";
|
||||
index++;
|
||||
}
|
||||
return newString;
|
||||
}
|
||||
|
||||
static int getIntFromString(String? numberString) {
|
||||
if (numberString != null) {
|
||||
final numberInt = int.tryParse(numberString);
|
||||
if (numberInt != null) {
|
||||
return numberInt;
|
||||
} else {
|
||||
final numberDouble = double.tryParse(numberString);
|
||||
if (numberDouble != null) {
|
||||
return numberDouble.toInt();
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
class ParserHelper {
|
||||
//todo : convert to extension
|
||||
static int parseInt(String value) {
|
||||
int result;
|
||||
try {
|
||||
result = int.parse(value);
|
||||
} catch (err) {
|
||||
result = 0;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static double parseDouble(String value) {
|
||||
double result;
|
||||
try {
|
||||
result = double.parse(value);
|
||||
} catch (err) {
|
||||
result = 0.0;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static String roundNumber(dynamic value) {
|
||||
String valueToString = value.toString();
|
||||
num number = num.tryParse(valueToString.isNotEmpty
|
||||
? valueToString.contains(',')
|
||||
? valueToString.replaceAll(',', '')
|
||||
: valueToString
|
||||
: '0') ??
|
||||
0;
|
||||
int roundedNum = number.round();
|
||||
|
||||
return NumberFormat("#,###,###", 'en_US').format(roundedNum);
|
||||
}
|
||||
|
||||
static String roundArea(dynamic value) {
|
||||
if (value.isNotEmpty && value.contains(' ')) {
|
||||
List<String> split = value!.split(' ');
|
||||
String formattedArea = ParserHelper.roundNumber(split[0]);
|
||||
|
||||
return '$formattedArea ${split[1]}';
|
||||
} else {
|
||||
String valueToString = value.toString();
|
||||
num number = num.tryParse(valueToString.isNotEmpty
|
||||
? valueToString.contains(',')
|
||||
? valueToString.replaceAll(',', '')
|
||||
: valueToString
|
||||
: '0') ??
|
||||
0;
|
||||
int roundedNum = number.round();
|
||||
|
||||
return NumberFormat("#,###,###", 'en_US').format(roundedNum);
|
||||
}
|
||||
}
|
||||
|
||||
static String oneDecimal(num value) {
|
||||
String numWithOneDecimal = value.toStringAsFixed(1);
|
||||
if (numWithOneDecimal.contains('.')) {
|
||||
List<String> numList = [];
|
||||
numList = numWithOneDecimal.split('.');
|
||||
// Example: if the number is 12.0 change it to 12
|
||||
if (numList[1] == '0') {
|
||||
numWithOneDecimal = numList[0];
|
||||
}
|
||||
}
|
||||
return numWithOneDecimal;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
class PhoneNumberTextInputFormatter extends TextInputFormatter {
|
||||
final String mask;
|
||||
final String separator;
|
||||
PhoneNumberTextInputFormatter({
|
||||
required this.mask,
|
||||
required this.separator,
|
||||
});
|
||||
@override
|
||||
TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
|
||||
if (newValue.text.isNotEmpty) {
|
||||
if (newValue.text.length > oldValue.text.length) {
|
||||
if (newValue.text.length > mask.length) return oldValue;
|
||||
if (newValue.text.length < mask.length && mask[newValue.text.length - 1] == separator) {
|
||||
return TextEditingValue(
|
||||
text: '${oldValue.text}$separator${newValue.text.substring(newValue.text.length - 1)}',
|
||||
selection: TextSelection.collapsed(
|
||||
offset: newValue.selection.end + 1,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
return newValue;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class SharedPreferencesHelper {
|
||||
// isRegistered flag to know if the user has entered his fullname and email or not (is he registered or not)
|
||||
static bool? isRegistered;
|
||||
|
||||
// flags to detect the mode {regular, onboarding, demo}
|
||||
static bool? isDemo;
|
||||
static bool? isOnBoarding;
|
||||
|
||||
// isDemoAndUseToken flag to use the user token in the header of the request in the demo experience, instead of "Demo" header in situations (1. openning the profile request 2. updating th user data -registeration- request)
|
||||
static bool? isDemoAndUseToken;
|
||||
|
||||
// addedFirstProperty flag to detect if the user has added his first property or not
|
||||
static bool? addedFirstProperty;
|
||||
|
||||
// stores the user id value
|
||||
static String? userIdValue;
|
||||
|
||||
// stores the phone number value
|
||||
static String? phoneNumber;
|
||||
|
||||
//stores the country code of the user phone
|
||||
static String? countryCode;
|
||||
|
||||
// static Future<bool?> getIsDemoValue() async {
|
||||
// isDemo = await readBoolFromSP(KeyConstants.isDemoFlag) ?? false;
|
||||
// return isDemo;
|
||||
// }
|
||||
//
|
||||
// static Future<bool?> getIsOnboardingValue() async {
|
||||
// isOnBoarding = await readBoolFromSP(KeyConstants.isOnboardingFlag);
|
||||
// return isOnBoarding;
|
||||
// }
|
||||
|
||||
static saveStringToSP(String key, String value) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setString(key, value);
|
||||
}
|
||||
|
||||
static saveBoolToSP(String key, bool value) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setBool(key, value);
|
||||
}
|
||||
|
||||
static saveIntToSP(String key, int value) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setInt(key, value);
|
||||
}
|
||||
|
||||
static saveDoubleToSP(String key, double value) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setDouble(key, value);
|
||||
}
|
||||
|
||||
static saveStringListToSP(String key, List<String> value) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setStringList(key, value);
|
||||
}
|
||||
|
||||
static Future<String> readStringFromSP(String key) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
String value = prefs.getString(key) ?? '';
|
||||
return value;
|
||||
}
|
||||
|
||||
static Future<bool?> readBoolFromSP(String key) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
bool? value = prefs.getBool(key);
|
||||
return value;
|
||||
}
|
||||
|
||||
static Future<int> readIntFromSP(String key) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
int value = prefs.getInt(key) ?? 0;
|
||||
return value;
|
||||
}
|
||||
|
||||
static Future<List<String>> readStringListFromSP(String key) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
List<String>? value = prefs.getStringList(key) ?? [];
|
||||
return value;
|
||||
}
|
||||
|
||||
static Future<bool> removeValueFromSP(String key) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.remove(key);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
class URLLauncher {
|
||||
static Future<void> sendWhatsapp(
|
||||
{String phoneNumber = '971581497062',
|
||||
String text = 'Hi%2C%20I%20would%20like%20to',
|
||||
String from = ''}) async {
|
||||
Uri launchUri;
|
||||
launchUri = Uri.parse("whatsapp://send?phone=%2B$phoneNumber&text=$text");
|
||||
// Launch the App
|
||||
try {
|
||||
// SegmentEvents.sendTrackEvent(SegmentEventModel(
|
||||
// eventName: 'Whatsapp opened', properties: {'From': from}));
|
||||
//
|
||||
// if (await canLaunchUrl(launchUri) == false) {
|
||||
// CustomSnackBar.displaySnackBar('Could not open whatsapp');
|
||||
// return;
|
||||
// }
|
||||
if (Platform.isAndroid) {
|
||||
await launch(
|
||||
launchUri.toString(),
|
||||
);
|
||||
} else {
|
||||
await launchUrl(
|
||||
launchUri,
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
// CustomSnackBar.displaySnackBar('Could not open whatsapp');
|
||||
throw 'Could not launch $phoneNumber';
|
||||
}
|
||||
}
|
||||
|
||||
static Future<void> sendEmail(
|
||||
{required String email, String subject = '', body = ''}) async {
|
||||
String? encodeQueryParameters(Map<String, String> params) {
|
||||
return params.entries
|
||||
.map((MapEntry<String, String> e) =>
|
||||
'${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value)}')
|
||||
.join('&');
|
||||
}
|
||||
|
||||
final emailLaunchUri = Uri(
|
||||
scheme: 'mailto',
|
||||
path: email,
|
||||
query: encodeQueryParameters(<String, String>{
|
||||
subject: body,
|
||||
}),
|
||||
);
|
||||
try {
|
||||
bool canLaunch = await canLaunchUrl(emailLaunchUri);
|
||||
if (canLaunch) {
|
||||
await launchUrl(emailLaunchUri);
|
||||
}
|
||||
} catch (err) {
|
||||
throw 'Could not launch $emailLaunchUri';
|
||||
}
|
||||
}
|
||||
|
||||
static Future<void> launch(String url) async {
|
||||
Uri parsedUrl = Uri.parse(url);
|
||||
try {
|
||||
bool canLaunch = await canLaunchUrl(parsedUrl);
|
||||
if (canLaunch) {
|
||||
await launchUrl(
|
||||
parsedUrl,
|
||||
// mode: LaunchMode.externalApplication,
|
||||
);
|
||||
}
|
||||
} catch (err) {
|
||||
throw 'Url launcher error: ${err.toString()}';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
class ImageManager {
|
||||
static const String base = 'assets/images';
|
||||
|
||||
static const String whiteLogo = '$base/white-logo.png';
|
||||
static const String blackLogo = '$base/black-logo.png';
|
||||
static const String boxEmpty = '$base/box-empty.jpg';
|
||||
static const String automation = '$base/automation.jpg';
|
||||
}
|
||||
|
||||
class IconsManager {
|
||||
// static const String facebookIcon = 'assets/icons/icon.png';
|
||||
}
|
||||
|
||||
class VideosManager {
|
||||
// static const String registrationVideo = 'assets/videos/video.mp4';
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class ColorsManager {
|
||||
static const Color primaryColor = Color(0xFF023dfe);
|
||||
static const Color secondaryColor = Colors.white;
|
||||
static const Color primaryTextColor = Colors.black;
|
||||
|
||||
static const Color greyColor = Color(0xFFd9d9d9);
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
abstract class Constants {}
|
||||
@@ -0,0 +1,45 @@
|
||||
import 'dart:ui';
|
||||
|
||||
/// # To add custom fonts to your application, add a fonts section here,
|
||||
/// # in this "flutter" section. Each entry in this list should have a
|
||||
/// # "family" key with the font family name, and a "fonts" key with a
|
||||
/// # list giving the asset and other descriptors for the font. For
|
||||
/// # example:
|
||||
///
|
||||
/// fonts:
|
||||
/// - family:Montserrat
|
||||
/// fonts:
|
||||
/// - asset: assets/ fonts/Montserrat-Botd. ttf
|
||||
/// weight: 700
|
||||
/// - asset: assets/ fonts/Montserrat-SemiB01d. ttf
|
||||
/// weight: 600
|
||||
|
||||
class FontsManager {
|
||||
static const FontWeight light = FontWeight.w300;
|
||||
static const FontWeight regular = FontWeight.w400;
|
||||
static const FontWeight medium = FontWeight.w500;
|
||||
static const FontWeight semiBold = FontWeight.w600;
|
||||
static const FontWeight bold = FontWeight.w700;
|
||||
static const FontWeight extraBold = FontWeight.w800;
|
||||
static const FontWeight black = FontWeight.w900;
|
||||
|
||||
static const String fontFamily = 'Aftika';
|
||||
}
|
||||
|
||||
class FontSize {
|
||||
static const double s12 = 12;
|
||||
static const double s10 = 10;
|
||||
static const double s14 = 14;
|
||||
static const double s16 = 16;
|
||||
static const double s18 = 18;
|
||||
static const double s20 = 20;
|
||||
static const double s21 = 21;
|
||||
static const double s22 = 22;
|
||||
static const double s24 = 24;
|
||||
static const double s25 = 25;
|
||||
static const double s26 = 26;
|
||||
static const double s28 = 28;
|
||||
static const double s30 = 30;
|
||||
static const double s35 = 35;
|
||||
static const double s48 = 48;
|
||||
}
|
||||
@@ -0,0 +1,428 @@
|
||||
// // ignore_for_file: lines_longer_than_80_chars
|
||||
|
||||
// class StringsManager {
|
||||
// static const noRouteFound = 'No route found';
|
||||
// static const switchToAWiderScreenToSeeTheTable =
|
||||
// 'Switch to a wider screen to see the table';
|
||||
// static const home = 'Home';
|
||||
// static const aboutUs1 = 'About Us';
|
||||
// static const complains = 'Complains';
|
||||
// static const registration = 'Registration';
|
||||
// static const commissionAndTransactions = 'Commission';
|
||||
// static const termsAndConditions = 'Terms & Conditions';
|
||||
// static const agents = 'Agents';
|
||||
// static const webApp = 'Web App';
|
||||
// static const contact = 'Contact Us';
|
||||
// static const bannerText = 'Aya for electronic payment services';
|
||||
// static const bannerSubText = '#Your money, in your mobile';
|
||||
// static const downloadApp = 'Download App Now!';
|
||||
// static const clickHere = 'Click Here To Try The App';
|
||||
// static const inquireAboutYourWallet = 'Inquire About Your Wallet';
|
||||
// static const readMore = 'Read More';
|
||||
// static const forMoreDetailsAndToKnowCommissionRate =
|
||||
// 'For more details and to know commission rate click here';
|
||||
// static const forMoreDetails = 'For more details click here here';
|
||||
// static const payYourBillsFromYourMobile = 'Pay your bills from your mobile!';
|
||||
// static const payYourBillsFromYourMobileDetails =
|
||||
// 'What you need to consume! Your bills and obligations will easily drive them with # verses from your mobile';
|
||||
// static const allFinancialServicesYouNeedWithOneApp =
|
||||
// 'All financial services you need with one application';
|
||||
// static const allFinancialServicesYouNeedWithOneAppDetails =
|
||||
// 'AYA provides you with your electronic wallet for free and compatible with all electronic payment services By estimated you pay: -Invoices -recharge - Payment of violations :( #Aea #Payment_Story_Assist ...';
|
||||
// static const transferAndReceiveYourMoneySafely =
|
||||
// 'Transfer and receive your money safely';
|
||||
// static const transferAndReceiveYourMoneySafelyDetails =
|
||||
// 'By creating an Aya wallet with a push of a button, you can easily transfer and receive your money What do you wait? Call to let you know about the network of agents deployed in all governorates of the Kingdom to benefit from the service free of charge 065509292...';
|
||||
// static const payYouUniversityFees =
|
||||
// 'Pay your university fees easily and securely';
|
||||
// static const payYouUniversityFeesDetails =
|
||||
// 'Wherever you are not, they are not pushing with any payment Contact us to create your wallet for free: 065509292 # Aya # Payment_right_First #Floosk_Bmobilek';
|
||||
// static const sendAndReceiveYourFinancialTransaction =
|
||||
// 'Send and receive your financial transaction from anywhere around the world';
|
||||
// static const sendAndReceiveYourFinancialTransactionDetails =
|
||||
// 'Send and receive your financial transaction from anywhere around the world using aya application';
|
||||
// static const emptyValidator = 'This field is required';
|
||||
|
||||
// static const servicesProvidedApp = 'Services provided App by Aya Pay';
|
||||
// static const paymentService = 'Payment service';
|
||||
// static const paymentServiceSubText = 'Payment through electronic wallet';
|
||||
// static const electronicWallet = 'Electronic wallet';
|
||||
// static const electronicWalletSubText =
|
||||
// 'Inquire about the balance in the portfolio';
|
||||
// static const nfcTag = 'NFC Tag';
|
||||
// static const nfcTagSubText =
|
||||
// 'Electronic payment in transportation that supports electronic payment.';
|
||||
// static const cashout = 'Cashout';
|
||||
// static const cashoutSubText =
|
||||
// 'ATM Cashout service or through the nearest agent';
|
||||
// static const payBills = 'pay bills';
|
||||
// static const payBillsSubText = 'Billing Payment Service (EFAWATEERCOM)';
|
||||
// static const atmCashout = 'ATM Cashout';
|
||||
// static const atmCashoutSubText = 'Cash Cashout from Cairo Amman Bank';
|
||||
|
||||
// static const aboutUs = 'About Us';
|
||||
// static const aboutUsDetails =
|
||||
// 'AYA-JO is a mobile payment service provider licensed by the Central Bank of Jordan to operate in the Jordanian market. AYA-JO provides various ways to allow users to purchase their own goods using mobile phone applications. Approval of the entire process and its monitoring by the Central Bank of Jordan';
|
||||
// static const footerSubmitAComplaint = 'Submit a complaint';
|
||||
// static const footerSubmitAComplaintDetails =
|
||||
// 'Call 06/5509292, ext. 300, available around the clock Or on the website, in the complaints tab, by all available means In the event that a solution to the problem is not reached within 30 working days, or in the absence of a convincing response from the company, or if the company refuses to receive the complaint, please contact the Central Bank of Jordan, Consumer Financial Protection Department, at 06/4630301.';
|
||||
// static const footerContactUs = 'Contact Us';
|
||||
// static const footerContactUsDetails =
|
||||
// 'Amman - Garden Street - Building Carrefour No. 90 Floor 3\n\nTelephone: +962 6 092 92\n\nE-mail : [email protected]';
|
||||
// static const footerEmail = 'E-mail : [email protected]';
|
||||
// static const footerPhone = 'Telephone: +962 6 092 92';
|
||||
// static const footerAddress =
|
||||
// 'Amman - Garden Street - Building Carrefour No. 90 Floor 3';
|
||||
// static const footerSubCategories = 'Sub Categories';
|
||||
// static const footerLastNews = 'Last News';
|
||||
// static const footerLastNewsDetails =
|
||||
// 'Save your effort and time and pay from your mobile and win whatever you are Buy Online! Or even Freelancer!\nSave your time with Aya and open your portfolio with us at your nearest authorized agent.';
|
||||
// static const footerCopyRight = '© 2017 - All Rights with aya';
|
||||
|
||||
// ///About Us Page Strings
|
||||
// static const serviceFeature = 'Service Features';
|
||||
// static const flexibleApplication =
|
||||
// 'Flexible application: Our application allows multiple features and languages to be more user friendly.';
|
||||
// static const protection =
|
||||
// 'Protection: Save all your data and protect it with our security system to avoid data leakage.';
|
||||
// static const ourMission = 'Our Mission';
|
||||
// static const ourMissionDetails =
|
||||
// 'Aya seeks to empower its employees and provide them with the best means of knowledge using state-of- the-art electronic payment technology to provide innovative solutions to achieve customer satisfaction and improve the level of services provided in line with the highest standards of quality and excellence.';
|
||||
// static const ourVision = 'Our Vision';
|
||||
// static const ourVisionDetails =
|
||||
// 'Play a leading role in the mobile payment market in Jordan.';
|
||||
// static const ourValues = 'Our Values';
|
||||
// static const ourValuesDetails =
|
||||
// 'High professionalism, credibility, fair competition, integration.';
|
||||
// static const companyServices = 'Company Services';
|
||||
|
||||
// static const personalWallets = 'Personal Wallets';
|
||||
// static const moneyDeposit =
|
||||
// 'Money deposit and withdrawal: by charge your e-wallet through our agent network, payment cards and efawateercom.';
|
||||
// static const moneyWithdrawal =
|
||||
// 'Money withdrawal: proceeding a cash-out process through our agent network, POS machines, CAB ATMs network.';
|
||||
// static const transferMoney =
|
||||
// 'Transfer money between AYAJO customers or by sending/receiving transfers with any E-wallet account in jordan from any company.';
|
||||
// static const payBillsForMoreThan250Services =
|
||||
// 'Pay bills for more than 250 services (Internet, phone, electricity, water, government service..etc) through eFAWATEERcom system.';
|
||||
|
||||
// static const businessSolutions = 'Business Solutions';
|
||||
// static const transportationSolution = 'Transportation Solution';
|
||||
// static const posSystem = 'POS System';
|
||||
// static const agentMerchantSystems = 'Agent Merchant Systems';
|
||||
// static const technicalChannelsAndSolutions =
|
||||
// 'Technical Channels and Solutions';
|
||||
// static const eWalletMobileApp =
|
||||
// 'E-wallet Mobile application with ability to access through web page';
|
||||
// static const paymentCards = 'Payment Cards';
|
||||
// static const qrCode = 'QR Code';
|
||||
|
||||
// ///Complains Page Strings
|
||||
|
||||
// static const complainsTitle = 'Submit a complaint';
|
||||
// static const complainsDetails =
|
||||
// 'Call 06/5509292, ext. 300, available around the clock Or on the website, in the complaints tab, by all available means In the event that a solution to the problem is not reached within 30 working days, or in the absence of a convincing response from the company, or if the company refuses to receive the complaint, please contact the Central Bank of Jordan, Consumer Financial Protection Department, at 06/4630301.';
|
||||
// static const call06 =
|
||||
// '1. Call 06/5509292, ext. 300, available around the clock';
|
||||
// static const orOnTheWebsite =
|
||||
// '2. Or on the website, in the complaints tab, by all available means';
|
||||
// static const inTheEvent =
|
||||
// '3. In the event that a solution to the problem is not reached within 30 working days, or in the absence of a convincing response from the company, or if the company refuses to receive the complaint, please contact the Central Bank of Jordan, Consumer Financial Protection Department, at 06/4630301.';
|
||||
// static const name = 'name';
|
||||
// static const enterYourName = 'Enter your name';
|
||||
// static const email = 'email';
|
||||
// static const enterYourEmail = 'Enter your email';
|
||||
// static const mobileNumber = 'mobile number';
|
||||
// static const enterYourMobileNumber = 'Enter your mobile number';
|
||||
// static const dateOfTheProblem = 'date of the problem';
|
||||
// static const enterDateOfTheProblem = 'Enter date of the problem';
|
||||
// static const complaintText = 'complaint text';
|
||||
// static const enterComplaintText = 'Enter complaint text';
|
||||
// static const submitComplaint = 'Submit Complaint';
|
||||
// static const complaintSubmitted = 'Complaint Submitted';
|
||||
|
||||
// ///registration page
|
||||
|
||||
// static const howToRegister = 'how to register - open E-wallet';
|
||||
// static const afterSigningTheContract =
|
||||
// 'After signing the contract at the agent, you will receive an SMS message containing the activation code';
|
||||
// static const enterTheActivationCode =
|
||||
// 'Enter the activation code and the mobile number by clicking on the Create Account button and then enter your password and your security code';
|
||||
// static const thereIsNoMinimumBalance =
|
||||
// 'There is no minimum balance, as you can open the wallet with a zero balance.';
|
||||
// static const usingTheElectronicWallet = 'Using the electronic wallet: ';
|
||||
// static const youCanPayThroughTheNumber =
|
||||
// 'You can pay through the number of another subscriber with an electronic wallet';
|
||||
// static const youCanAlsoBuyFromAnyStore =
|
||||
// 'You can also buy from any store or supermarket that serves the electronic wallet';
|
||||
// static const whenYouSubscribeToAya =
|
||||
// 'When you subscribe to Aya, you get an NFC-Tag sticker that allows you to pay electronically in transportation that supports electronic payment.';
|
||||
// static const yourMobileIsOld =
|
||||
// 'Your mobile is old .... Simply you can also call * 999 # and follow the instructions';
|
||||
// static const youCanPayMobileBills =
|
||||
// 'You can pay mobile bills or electricity, water and more than sixty types of bills.';
|
||||
// static const youCanGetAMasterCard =
|
||||
// 'You can get a Master Card linked to your electronic wallet and enable you to withdraw cash from any ATM, buy goods and shop online, with the ability to control it through the application.';
|
||||
|
||||
// ///commission and transactions page
|
||||
|
||||
// static const transactionsTitle = 'Transactions:';
|
||||
// static const service = 'Service';
|
||||
// static const serviceDetails = 'Service Details';
|
||||
// static const fees = 'Fees/ Dinar';
|
||||
|
||||
// static const transferBetweenIndividualsService =
|
||||
// 'Transfer between individuals';
|
||||
// static const transferBetweenSameIndividualsDetails =
|
||||
// 'Transfer from individual aya pay wallet to individual aya pay wallet';
|
||||
// static const transferBetweenSameIndividualsFees = 'Free';
|
||||
|
||||
// static const transferBetweenDifferentIndividualsDetails =
|
||||
// 'Transfer from individual aya pay wallet to other individual wallet';
|
||||
// static const transferBetweenIndividualsFeesDetailsLessThan50 =
|
||||
// 'Less than 50 dinars';
|
||||
// static const transferBetweenIndividualsFeesDetailsFrom50 =
|
||||
// 'From 50 dinars to 100 dinars';
|
||||
// static const transferBetweenIndividualsFeesDetailsFrom100 =
|
||||
// 'From 100 dinars to 500 dinars';
|
||||
// static const transferBetweenIndividualsFeesDetailsFrom500 =
|
||||
// 'From 500 dinars to 1000 dinars';
|
||||
// static const transferBetweenIndividualsFeesDetailsLessThan50Fees = '0.15';
|
||||
// static const transferBetweenIndividualsFeesDetailsFrom50Fees = '0.25';
|
||||
// static const transferBetweenIndividualsFeesDetailsFrom100Fees = '0.35';
|
||||
// static const transferBetweenIndividualsFeesDetailsFrom500Fees = '0.5';
|
||||
|
||||
// static const cashDepositService = 'Cash deposit';
|
||||
// static const cashDepositIndividualDetails =
|
||||
// 'Deposit with an individual wallet at agents';
|
||||
// static const cashDepositIndividualFees = 'Free';
|
||||
// static const cashDepositCompanyDetails =
|
||||
// 'Deposit with a corporate wallet at agents';
|
||||
// static const cashDepositCompanyFees = '0.50';
|
||||
// static const cashDepositAtATMDetails =
|
||||
// 'Cash deposit through ATM without card';
|
||||
// static const cashDepositAtATMFees = '1.0';
|
||||
|
||||
// static const cashWithdrawalService = 'Cash withdrawal';
|
||||
// static const cashWithdrawalFromAgent = 'Cash withdrawal from agents';
|
||||
// static const cashWithdrawalFromAgentLessThan20 = 'Less than 20 dinars';
|
||||
// static const cashWithdrawalFromAgentFrom20 = 'From 20 dinars to 50 dinars';
|
||||
// static const cashWithdrawalFromAgentFrom50 = 'From 50 dinars to 1000 dinars';
|
||||
// static const cashWithdrawalFromAgentLessThan20Fees = '0.5';
|
||||
// static const cashWithdrawalFromAgentFrom20Fees = '0.75';
|
||||
// static const cashWithdrawalFromAgentFrom50Fees = '1';
|
||||
// static const cashWithdrawalAtATMDetails =
|
||||
// 'Cash withdrawal through ATM with card/without card';
|
||||
// static const cashWithdrawalAtATMFees = '1';
|
||||
|
||||
// static const otherAdditionalServices = 'Other additional services';
|
||||
// static const otherAdditionalPayThroughDetails = 'Pay through eFawateercom';
|
||||
// static const otherAdditionalEVouchersDetails = 'E-vouchers';
|
||||
// static const otherAdditionalPayThroughFees = 'No additional fees';
|
||||
// static const otherAdditionalEVouchersFees = 'According to the voucher';
|
||||
|
||||
// static const internationalTransfersService = 'International transfers';
|
||||
// static const internationalTransfersSendDetails =
|
||||
// 'Send international transfers';
|
||||
// static const internationalTransfersReceiveDetails =
|
||||
// 'Receive international transfers';
|
||||
// static const internationalTransfersSendFees = 'According to the country';
|
||||
// static const internationalTransfersReceiveFees = 'Free';
|
||||
|
||||
// static const electronicCardsService = 'Electronic cards';
|
||||
// static const electronicCardsIssueDetails =
|
||||
// 'Issue an electronic card linked to the electronic wallet';
|
||||
// static const electronicCardsResendDetails = "Resend the card's secret code";
|
||||
// static const electronicCardsIssueFees = '5';
|
||||
// static const electronicCardsResendFees = '1';
|
||||
|
||||
// static const solidAccountService = 'Solid account';
|
||||
// static const solidAccountDetails = 'Monthly fees';
|
||||
// static const solidAccountFees = '1';
|
||||
|
||||
// ///Services Page Strings
|
||||
|
||||
// static const definitions = 'Definitions';
|
||||
// static const definitionsDescription =
|
||||
// 'Since Aya Company for Electronic Payment Services is licensed by the Central Bank to connect to the national exchange and provide payment service through mobile phones in the Hashemite Kingdom of Jordan. Where I wish the site below to contract with the company or one of its agents for the purposes of opening an electronic wallet, and to benefit from payment services through mobile phones, in accordance with the terms and conditions of those services.';
|
||||
|
||||
// static const generalConditions = 'General Conditions';
|
||||
// static const generalConditionsDescription =
|
||||
// 'I hereby acknowledge that once I sign these Terms and Conditions, an agreement will be created in force and binding on me to apply to all transactions I carry out through the Mobile Payment Services.';
|
||||
|
||||
// static const clientResponsibilities = 'Client Responsibilities';
|
||||
// static const clientResponsibilitiesDescription =
|
||||
// 'The customer acknowledges that all data, information and documents provided by him are true and original and acknowledges his full responsibility for what is stated therein, the extent of its legality and any matters related to it.';
|
||||
|
||||
// static const companyResponsibilities = 'Company Responsibilities';
|
||||
// static const companyResponsibilitiesDescription =
|
||||
// 'The Company/Service Provider is obligated to inform the Client of the balance of his wallet immediately upon the end of any financial movement on his wallet.';
|
||||
|
||||
// ///Definitions Page Strings
|
||||
|
||||
// static const definitionsCompanyServiceProvider =
|
||||
// 'Company/Service Provider: Aya Electronic Payment Company';
|
||||
// static const definitionsAgent =
|
||||
// 'Agent: One of the authorized agents of Aya Company for electronic payment service';
|
||||
// static const definitionsServices = 'Service(s): Mobile Payment Service';
|
||||
// static const definitionsBank = 'Bank:Central Bank of Jordan';
|
||||
// static const definitionsCustomer =
|
||||
// 'Customer: The natural and/or legal person who will open an electronic wallet in his name and who has signed these terms and conditions and who has been registered at the National Exchange through the service provider for the purposes of using the mobile payment service.';
|
||||
// static const definitionsEWallet =
|
||||
// 'E-wallet: It is the default account that is opened with the company in the name of the client to enable him to carry out mobile payment transactions';
|
||||
// static const definitionsElectronicMoney =
|
||||
// 'Electronic money: The value of cash stored electronically and issued against the receipt of cash amounts in the same type of currency and its value and is a means of payment transferable between the parties dealing in it by electronic means';
|
||||
|
||||
// ///general conditions
|
||||
|
||||
// static const conditionsIntroductionAndDefinitions =
|
||||
// 'Introduction and Definitions are an integral part of this Agreement';
|
||||
// static const conditionsApplicantMustBeAtLeast18YearsOld =
|
||||
// 'The applicant must be at least 18 years old, and those under the age of 18 are required to submit the application by their guardian or his legal representative.';
|
||||
// static const conditionsClientAuthorizesTheCompany =
|
||||
// 'The Client authorizes the Company to send his data to the National Exchange for the purposes of registration and the Company is obligated to send the result of the registration process to the Client.';
|
||||
// static const conditionsClientAuthorizesTheCompany2 =
|
||||
// "The Client authorizes the Company/Service Provider with absolute and irrevocable authorization to credit the value of any executed transaction to the Client's wallet account with the Company/Service Provider.";
|
||||
// static const conditionsUponTheOfficialRegistration =
|
||||
// 'Upon the official registration of the Customer and activation of the Service, the Company/Service Provider issues a user code and PIN for the Customer and the Customer is committed to maintaining it and at his full responsibility.';
|
||||
// static const conditionsTheUserCodeReceivedByTheCustomer =
|
||||
// 'The "User and PIN" code received by the customer is considered as an acknowledgment by him of his consent to the execution of any orders, services or payment orders.';
|
||||
// static const conditionsMobilePaymentServiceIsProvided =
|
||||
// 'Mobile payment service is provided within the Hashemite Kingdom of Jordan exclusively and in Jordanian dinars only.';
|
||||
// static const conditionsFinancialTransactionsThatTheCustomer =
|
||||
// 'Financial transactions that the customer is allowed to carry out through the wallet without limitation: transfer and receipt of funds, payment of bills, payment to the merchant, withdrawal and deposit through ATMs or agents.';
|
||||
|
||||
// ///client responsibilities
|
||||
|
||||
// static const clientResTheCustomerAcknowledges =
|
||||
// 'The customer acknowledges that all data, information and documents provided by him are duly correct and acknowledges his full responsibility for what is stated therein, the extent of its legality and any matters related to it.';
|
||||
// static const clientResTheCustomerAcknowledges2 =
|
||||
// 'The customer acknowledges that he has seen and understood the mechanism of operation of the services and any published information and can view it.';
|
||||
// static const clientResTheCustomerIsObligated =
|
||||
// 'The customer is obligated to review the mobile payment instructions, the operational framework and the instructions issued by the Central Bank of Jordan in this regard and any amendments that occur to them.';
|
||||
// static const clientResTheClientAgrees =
|
||||
// 'The Client agrees to consider all electronic records of the Company certified, documented, conclusive evidence and binding on him. It also agrees that the electronic register maintained and extracted from the national exchange and for all movements and operations carried out through the national exchange shall be considered the approved electronic register in the event of any dispute.';
|
||||
// static const clientResTheCustomerIsInformed =
|
||||
// 'The customer is informed that the service will be in Jordanian Dinars only, until the legislative authorities approve otherwise.';
|
||||
|
||||
// static const clientResTheClientAgrees2 =
|
||||
// "The Client agrees to authorize the Company to have an absolute and irrevocable general authorization to credit the value of any executed transaction to the Client's Wallet Account with the Company.";
|
||||
// static const clientResTheCustomerAcknowledges3 =
|
||||
// 'The customer acknowledges that the use of the service is subject to the legislation in force issued by the Central Bank of Jordan.';
|
||||
// static const clientResTheCustomerAcknowledges4 =
|
||||
// "The customer acknowledges with his knowledge and personal consent that the customer's subscription is linked to the national number for Jordanians, or the national number of the establishment for private/public companies, or the identity identification number accepted in accordance with the legislation in force for non-Jordanians, and as stipulated in the instructions of combating money laundering and terrorist financing.";
|
||||
// static const clientResTheCustomerIsObligated2 =
|
||||
// 'The customer is obligated to replenish the electronic wallet and maintain sufficient balance for the purposes of using the electronic wallet, and it is not permissible to use mobile phone recharge cards for the purposes of replenishing the balance of electronic wallets.';
|
||||
// static const clientResTheCustomerAcknowledges5 =
|
||||
// "The customer acknowledges with his knowledge and personal consent that the customer's subscription is linked to the national number for Jordanians, or the national number of the establishment for private/public companies, or the identity identification number accepted in accordance with the legislation in force for non-Jordanians, and as stipulated in the instructions of combating money laundering and terrorist financing.";
|
||||
|
||||
// static const clientResTheCustomerIsObligated3 =
|
||||
// 'The customer is obligated to replenish the electronic wallet and maintain sufficient balance for the purposes of using the electronic wallet, and it is not permissible to use mobile phone recharge cards for the purposes of replenishing the balance of electronic wallets.';
|
||||
// static const clientResTheCustomerAcknowledges6 =
|
||||
// "The customer acknowledges that the electronic wallet is linked to the mobile phone number provided / chosen by him, so that payment is made through electronic money that is transferred by the service provider / agent to the customer's wallet against the cash received, and then those electronic money are dealt with by the customer.";
|
||||
// static const clientResTheCustomerAcknowledges7 =
|
||||
// 'The customer acknowledges that he has reviewed the monthly limits for mobile payment transactions as stated in the instructions issued by the system administrator and any amendments that may occur to them.';
|
||||
// static const clientResTheCustomerIsCommitted =
|
||||
// 'The customer is committed to the ceiling of daily movements as stipulated in the instructions issued by the system administrator and any amendments that may occur to them.';
|
||||
// static const clientResTheClientIsObliged =
|
||||
// 'The Client is obliged, at his own risk, to inform the Company immediately in the event of loss and/or change of the mobile number registered with the Company, through the customer service available around the clock.';
|
||||
|
||||
// static const clientResTheCustomerMustSend =
|
||||
// "The customer must send any complaints to the company's complaints center and/or call the number of the complaints center available around the clock.";
|
||||
// static const clientResTheCustomerAcknowledges8 =
|
||||
// 'The Customer acknowledges that if the mobile number is linked to his account, his data will be displayed at the originator of the transfer on the payment channels of the participants on the system.';
|
||||
// static const clientResTheCustomerAgrees =
|
||||
// "The Customer agrees in advance to show his/her personal data (name, account number and/or service provider name) to the originator of the remittance on the participants' payment channels on the system, when making a sending, receiving and/or inquiry for any money transfer.";
|
||||
// static const clientResTheCustomerMustSend2 =
|
||||
// "The Customer must send any suggestion to the Company's Customer Service Center and/or call the number of the Customer Service Center available around the clock.";
|
||||
// static const clientResTheCustomerIsObligated4 =
|
||||
// 'The customer is obliged, on his personal responsibility, to verify the details of the transaction in terms of the phone number of the receiver of the transaction and the value before executing the transaction, ensuring the protection of the personal password and adhering to all security and confidentiality rules as approved by the company, in addition to not issuing transactions without sufficient balances in his accounts.';
|
||||
|
||||
// static const clientResTheCustomerAcknowledges9 =
|
||||
// 'The customer acknowledges and agrees that the company / service provider reserves the right at all times to amend the terms and conditions related to this service and after being notified of this procedure at his address shown above and by all available means with reasons, and also acknowledges his commitment to those terms and conditions after being amended and agrees that if he uses this service / services after making any amendments or changes to its terms or conditions, he accepts and agrees to all new and/or amended terms, conditions and conditions.';
|
||||
// static const clientResTheCustomerIsObligated5 =
|
||||
// "The customer is obligated to verify the movements he has made by entering the service provider's application or communicating with customer service in this regard.";
|
||||
// static const clientResTheCustomerHasTheRight =
|
||||
// 'The customer has the right to submit any suggestion or submit any complaint without incurring additional fees or commissions that may hinder his right to submit a complaint.';
|
||||
// static const clientResInCaseOfDeath =
|
||||
// 'In the event of the death of the customer, the funds in the electronic wallet will be seized, the seizure will not be released unless all requirements under the law in force in the Hashemite Kingdom of Jordan are met.';
|
||||
// static const clientResTheElectronicWalletIsConsidered =
|
||||
// "The electronic wallet is considered rigid if no financial movement is made on it for a period of one year, and in the event that it is not possible to communicate with the customer who owns the wallet and exhaust all means of communication with him, a commission will be collected in accordance with the pricing policy published on the company's website.";
|
||||
|
||||
// static const clientResTheCompanyShallNotify =
|
||||
// 'The Company shall notify the Client at his address available with the Company that his electronic wallet will be considered rigid at least one month before the expiry of the period stipulated above.';
|
||||
// static const clientResItIsNotAllowed =
|
||||
// 'It is not allowed to accept any withdrawal or transfer transactions from the rigid electronic wallet except through the customer personally or his representative under a judicial power of attorney or duly approved authorization, or the authorized signatory of the electronic wallet in the case of a legal person to visit the payment service provider at its headquarters.';
|
||||
// static const clientResInCaseTheClientOrHisLegal =
|
||||
// 'In the event that the Client or his legal representative reviews the Company with the aim of reactivating the rigid electronic wallet or withdrawing the balance, the Company is obligated to reactivate the electronic wallet or disburse the existing balance.';
|
||||
// static const clientResTheClientAcknowledges =
|
||||
// 'The Client acknowledges that the Company has the right, after being informed of this, and in the event of any reason or in the event that the Client breaches the terms of the contract or shows the invalidity of';
|
||||
|
||||
// ///company responsibilities
|
||||
|
||||
// static const companyResTheCompanyIsObligated =
|
||||
// 'The Company / Service Provider is obligated to inform the Client about the balance of his wallet, the type of movement he made and the remaining balance in the wallet immediately after the end of any movement executed on his wallet.';
|
||||
// static const companyResTheCompanyIsCommitted =
|
||||
// "The company is committed to the refund mechanism to customers in the event that the company / service provider stops providing the service in accordance with the company's work procedures.";
|
||||
// static const companyResTheCompanyIsCommitted2 =
|
||||
// "The company is committed to taking all necessary measures and precautionary measures to ensure the security and confidentiality of the client's information.";
|
||||
// static const companyResTheCompanyIsCommitted3 =
|
||||
// 'The company is committed to taking all necessary measures to comply with the service with all legislation in force in the Kingdom and any instructions issued by the Central Bank of Jordan and to comply with the requirements of money laundering and terrorist financing.';
|
||||
// static const companyResTheCompanyIsCommitted4 =
|
||||
// 'The Company is committed to providing the Client with a list of commissions, fees and benefits collected by the payment service provider for all products and services provided by the Company, as shown in the Special tab on commissions and commission ceilings on the website.';
|
||||
// static const companyResTheCompanyIsCommitted5 =
|
||||
// 'The company / service provider is committed to providing the appropriate environment and safe procedures to protect data and information related to customers.';
|
||||
// static const companyResTheCompanyIsCommitted6 =
|
||||
// 'The Company is committed to informing the Clients of the appropriate and available methods of any amendment that may occur to the list of commissions and fees that affect the Clients, 30 days before the application of the new prices and commissions.';
|
||||
// static const companyResTheCompanyIsObligated2 =
|
||||
// 'The company is obligated to accept any suggestions or complaints by customers without charging the client any commissions or additional fees and without imposing any conditions that may hinder his right to submit a complaint.';
|
||||
// static const companyResTheCompanyIsObligated3 =
|
||||
// 'The Company is committed to following special procedures in these cases (death of the client, freezing of the wallet, closure of the electronic payment account, or suspension of any payment tools or electronic means associated with them).';
|
||||
// static const companyResTheCompanyIsObligated4 =
|
||||
// 'The Company is obliged to clarify or inform the Client of the financial transactions allowed to be carried out as described in the General Conditions tab.';
|
||||
// static const companyResTheCompanyIsObligated5 =
|
||||
// 'The Company is obligated to provide the Client with a copy of the subscription contract signed with him and any notices, data or statements related to his electronic wallet, even if there is a judicial dispute between the Customer and the Service Provider.';
|
||||
|
||||
// ///agents
|
||||
|
||||
// static const agentsFindYour = 'Find your nearest agent with\nAya Finder';
|
||||
// static const agentsHowToBecome = 'HOW TO BECOME AN AGENT';
|
||||
// static const agentsFindYourDetails =
|
||||
// 'You can now search for the nearest agent or service provider using Google Maps in an easy and fast way';
|
||||
|
||||
// ///agent finder
|
||||
|
||||
// static const ayaFinder = 'AYA Finder';
|
||||
// static const ayaFinderDetails =
|
||||
// 'You can search for your nearest agent to open a new wallet or top up your wallet using the map or visit one of our agents from the table below :';
|
||||
|
||||
// ///how to become an agent
|
||||
|
||||
// static const howToBecomeAnAgent = 'How to become an agent !';
|
||||
// static const howToBecomeAnAgentDetails =
|
||||
// 'To apply for Aya Agency for Electronic Payment Services, please fill out the application form below and we will contact you as soon as possible.';
|
||||
|
||||
// ///map
|
||||
// static const howToSearchByMapTitle = 'How to search by map:';
|
||||
// static const howToSearchByMapDetails =
|
||||
// 'To determine your location, click on a bookmark, or you can type the place in the search box, then you have to click on the search button to have the map find your nearest agents';
|
||||
|
||||
// ///Error 404
|
||||
|
||||
// static const error404 = 'Error 404';
|
||||
// static const error404Details =
|
||||
// 'The page you are looking for does not exist or has been moved';
|
||||
|
||||
// ///contact us
|
||||
|
||||
// static const contactUsGetInTouch = 'GET IN TOUCH WITH US';
|
||||
// static const contactUsGetInTouchDetails =
|
||||
// 'Dear visitors, thank you for visiting Aya.Jo website. We welcome your letters, questions and suggestions that will receive attention and welcome from the team. We are always keen to build a relationship of mutual trust between us and our visitors, and to enhance interaction through responses to your messages. Feel free to send us your questions and suggestions, and our team will get back to you as soon as possible.';
|
||||
// static const contactUsPublicAdministration = 'Public Administration';
|
||||
// static const contactUsPublicAdministrationDetails =
|
||||
// 'Amman - Garden Street - Carrefour Building No. 90, 3rd floor\nTel: (+92) 092 55 6 962\nFax: (+19) 880 56 6 962\nToll Free : 080022068\[email protected]\nP.O.Box:930587 , Postal Code:11193 – Amman, Jordan';
|
||||
// static const contactUsWorkingHours = 'working hours';
|
||||
// static const contactUsWorkingHoursDetails =
|
||||
// 'Official working hours are from Sunday to Thursday from half past eight in the morning until half past five in the evening or call us at any time through the customer service center available seven days a week 24 hours a day.';
|
||||
// static const contactUsFollowUsOn = 'Follow us on';
|
||||
// }
|
||||
@@ -0,0 +1,87 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'font_manager.dart';
|
||||
|
||||
TextStyle _getTextStyle({
|
||||
required double fontSize,
|
||||
required Color color,
|
||||
required FontWeight fontWeight,
|
||||
}) =>
|
||||
TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
fontSize: fontSize,
|
||||
color: color,
|
||||
fontWeight: fontWeight,
|
||||
);
|
||||
|
||||
/// regular style
|
||||
TextStyle getTextStyleRegular({
|
||||
required Color color,
|
||||
double fontSize = FontSize.s14,
|
||||
fontWeight = FontsManager.regular,
|
||||
}) =>
|
||||
_getTextStyle(
|
||||
fontSize: fontSize,
|
||||
color: color,
|
||||
fontWeight: fontWeight,
|
||||
);
|
||||
|
||||
/// light style
|
||||
TextStyle getTextStyleLight({
|
||||
required Color color,
|
||||
double fontSize = FontSize.s12,
|
||||
fontWeight = FontsManager.light,
|
||||
}) =>
|
||||
_getTextStyle(
|
||||
fontSize: fontSize,
|
||||
color: color,
|
||||
fontWeight: fontWeight,
|
||||
);
|
||||
|
||||
/// medium style
|
||||
TextStyle getTextStyleMedium({
|
||||
required Color color,
|
||||
double fontSize = FontSize.s16,
|
||||
fontWeight = FontsManager.medium,
|
||||
}) =>
|
||||
_getTextStyle(
|
||||
fontSize: fontSize,
|
||||
color: color,
|
||||
fontWeight: fontWeight,
|
||||
);
|
||||
|
||||
/// semi bold style
|
||||
TextStyle getTextStyleSemiBold({
|
||||
required Color color,
|
||||
double fontSize = FontSize.s18,
|
||||
fontWeight = FontsManager.semiBold,
|
||||
}) =>
|
||||
_getTextStyle(
|
||||
fontSize: fontSize,
|
||||
color: color,
|
||||
fontWeight: fontWeight,
|
||||
);
|
||||
|
||||
/// bold style
|
||||
TextStyle getTextStyleBold({
|
||||
required Color color,
|
||||
double fontSize = FontSize.s20,
|
||||
fontWeight = FontsManager.bold,
|
||||
}) =>
|
||||
_getTextStyle(
|
||||
fontSize: fontSize,
|
||||
color: color,
|
||||
fontWeight: fontWeight,
|
||||
);
|
||||
|
||||
/// extra bold style
|
||||
TextStyle getTextStyleExtraBold({
|
||||
required Color color,
|
||||
double fontSize = FontSize.s22,
|
||||
fontWeight = FontsManager.extraBold,
|
||||
}) =>
|
||||
_getTextStyle(
|
||||
fontSize: fontSize,
|
||||
color: color,
|
||||
fontWeight: fontWeight,
|
||||
);
|
||||
@@ -0,0 +1,156 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'color_manager.dart';
|
||||
import 'font_manager.dart';
|
||||
|
||||
ThemeData myTheme = ThemeData(
|
||||
///main colors
|
||||
primaryColor: ColorsManager.primaryColor,
|
||||
// colorScheme: ColorsManager.lightColorScheme,
|
||||
scaffoldBackgroundColor: Colors.white,
|
||||
|
||||
///text theme
|
||||
textTheme: const TextTheme(
|
||||
///display
|
||||
displayLarge: TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
fontSize: FontSize.s35,
|
||||
fontWeight: FontsManager.regular,
|
||||
color: Colors.black,
|
||||
),
|
||||
displayMedium: TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
fontSize: FontSize.s20,
|
||||
fontWeight: FontsManager.regular,
|
||||
color: Colors.black,
|
||||
),
|
||||
displaySmall: TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
fontSize: FontSize.s16,
|
||||
fontWeight: FontsManager.regular,
|
||||
color: Colors.black,
|
||||
),
|
||||
|
||||
///title
|
||||
titleLarge: TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
fontSize: FontSize.s48,
|
||||
fontWeight: FontsManager.regular,
|
||||
color: Colors.black,
|
||||
),
|
||||
titleMedium: TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
fontSize: FontSize.s30,
|
||||
fontWeight: FontsManager.regular,
|
||||
color: Colors.black,
|
||||
),
|
||||
titleSmall: TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
fontSize: FontSize.s25,
|
||||
fontWeight: FontsManager.regular,
|
||||
color: Colors.black,
|
||||
),
|
||||
|
||||
///body
|
||||
bodyLarge: TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
fontSize: FontSize.s18,
|
||||
fontWeight: FontsManager.regular,
|
||||
color: Colors.black,
|
||||
),
|
||||
bodyMedium: TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
fontSize: FontSize.s14,
|
||||
fontWeight: FontsManager.regular,
|
||||
color: Colors.black,
|
||||
),
|
||||
bodySmall: TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
fontSize: FontSize.s12,
|
||||
fontWeight: FontsManager.regular,
|
||||
color: Colors.black,
|
||||
),
|
||||
|
||||
labelLarge: TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
fontSize: FontSize.s18,
|
||||
fontWeight: FontsManager.regular,
|
||||
color: Colors.black,
|
||||
),
|
||||
labelMedium: TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
fontSize: FontSize.s16,
|
||||
fontWeight: FontsManager.regular,
|
||||
color: Colors.black,
|
||||
),
|
||||
labelSmall: TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
fontSize: FontSize.s14,
|
||||
fontWeight: FontsManager.regular,
|
||||
color: Colors.black,
|
||||
),
|
||||
),
|
||||
|
||||
///button theme
|
||||
// buttonTheme: ButtonThemeData(
|
||||
// buttonColor: ColorsManager.primaryLightColor,
|
||||
// padding: const EdgeInsets.symmetric(horizontal: AppPadding.p8),
|
||||
// textTheme: ButtonTextTheme.primary,
|
||||
// hoverColor: ColorsManager.primaryDarkColor,
|
||||
// shape: RoundedRectangleBorder(
|
||||
// borderRadius: BorderRadius.circular(AppRadius.r4),
|
||||
// ),),
|
||||
//
|
||||
// textButtonTheme: TextButtonThemeData(
|
||||
// style: ButtonStyle(
|
||||
// backgroundColor:
|
||||
// MaterialStateProperty.all<Color>(ColorsManager.primaryLightColor),
|
||||
// padding: MaterialStateProperty.all<EdgeInsets>(
|
||||
// const EdgeInsets.all(AppPadding.p8),),
|
||||
// textStyle: MaterialStateProperty.all<TextStyle>(
|
||||
// const TextStyle(
|
||||
// fontFamily: FontsManager.fontFamily,
|
||||
// fontSize: FontSize.s16,
|
||||
// fontWeight: FontsManager.regular,
|
||||
// color: ColorsManager.onPrimaryLightColor,
|
||||
// ),
|
||||
// ),
|
||||
// // shape: MaterialStateProperty.all<OutlinedBorder>(
|
||||
// // RoundedRectangleBorder(
|
||||
// // borderRadius: BorderRadius.circular(AppRadius.r4),
|
||||
// // side: const BorderSide(color: Colors.grey),
|
||||
// // ),
|
||||
// // ),
|
||||
// ),
|
||||
// ),
|
||||
|
||||
///input decoration theme
|
||||
inputDecorationTheme: const InputDecorationTheme(
|
||||
border: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(8)),
|
||||
),
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(color: Colors.grey),
|
||||
borderRadius: BorderRadius.all(Radius.circular(8)),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(color: ColorsManager.primaryColor),
|
||||
borderRadius: BorderRadius.all(Radius.circular(8)),
|
||||
),
|
||||
labelStyle: TextStyle(
|
||||
fontFamily: FontsManager.fontFamily,
|
||||
color: Colors.grey,
|
||||
fontSize: FontSize.s16,
|
||||
fontWeight: FontsManager.regular,
|
||||
),
|
||||
),
|
||||
|
||||
///card theme
|
||||
//TODO edit card theme
|
||||
cardTheme: const CardTheme(
|
||||
elevation: 0,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(8)),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -0,0 +1,61 @@
|
||||
// import '../../imports.dart';
|
||||
|
||||
// class AppMargin {
|
||||
// static const m8 = 8.0;
|
||||
// static const m12 = 12.0;
|
||||
// static const m14 = 14.0;
|
||||
// static const m16 = 16.0;
|
||||
// static const m18 = 18.0;
|
||||
// static const m20 = 20.0;
|
||||
// static const m24 = 24.0;
|
||||
// static const m32 = 32.0;
|
||||
// static const m40 = 40.0;
|
||||
// static const m65 = 65.0;
|
||||
// }
|
||||
|
||||
// class AppPadding {
|
||||
// static const p4 = 4.0;
|
||||
// static const p8 = 8.0;
|
||||
// static const p12 = 12.0;
|
||||
// static const p14 = 14.0;
|
||||
// static const p16 = 16.0;
|
||||
// static const paragraphPadding = 15.0;
|
||||
// static const p18 = 18.0;
|
||||
// static const p20 = 20.0;
|
||||
// static const titleSmallPadding = 20.0;
|
||||
// static const p24 = 24.0;
|
||||
// static const p32 = 32.0;
|
||||
// static const p40 = 40.0;
|
||||
// static const p65 = 65.0;
|
||||
// static const p80 = 80.0;
|
||||
// static const p100 = 100.0;
|
||||
// static const p150 = 150.0;
|
||||
// static const deskTopPadding = 160.0;
|
||||
// static const tabletPadding = 100.0;
|
||||
// static const mobilePadding = 40.0;
|
||||
// }
|
||||
|
||||
// class AppSize {
|
||||
// static const s8 = 8.0;
|
||||
// static const s12 = 12.0;
|
||||
// static const s14 = 14.0;
|
||||
// static const s16 = 16.0;
|
||||
// static const s18 = 18.0;
|
||||
// static const s20 = 20.0;
|
||||
// static const s24 = 24.0;
|
||||
// static const s32 = 32.0;
|
||||
// static const s40 = 40.0;
|
||||
|
||||
// static const double logoHeight = 80;
|
||||
// static const double appBarHeight = 40;
|
||||
// }
|
||||
|
||||
// class AppRadius {
|
||||
// static const r4 = 4.0;
|
||||
// static const r8 = 8.0;
|
||||
// static const r12 = 12.0;
|
||||
// static const r14 = 14.0;
|
||||
// static const r16 = 16.0;
|
||||
// static const r18 = 18.0;
|
||||
// static const r50 = 50.0;
|
||||
// }
|
||||
@@ -1,44 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class Responsive extends StatelessWidget {
|
||||
final Widget mobile;
|
||||
final Widget? tablet;
|
||||
final Widget desktop;
|
||||
|
||||
const Responsive({
|
||||
super.key,
|
||||
required this.mobile,
|
||||
this.tablet,
|
||||
required this.desktop,
|
||||
});
|
||||
|
||||
// This size work fine on my design, maybe you need some customization depends on your design
|
||||
|
||||
// This isMobile, isTablet, isDesktop help us later
|
||||
static bool isMobile(BuildContext context) =>
|
||||
MediaQuery.of(context).size.width < 850;
|
||||
|
||||
static bool isTablet(BuildContext context) =>
|
||||
MediaQuery.of(context).size.width < 1100 &&
|
||||
MediaQuery.of(context).size.width >= 850;
|
||||
|
||||
static bool isDesktop(BuildContext context) =>
|
||||
MediaQuery.of(context).size.width >= 1100;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final Size size = MediaQuery.of(context).size;
|
||||
// If our width is more than 1100 then we consider it a desktop
|
||||
if (size.width >= 1100) {
|
||||
return desktop;
|
||||
}
|
||||
// If width it less then 1100 and more then 850 we consider it as tablet
|
||||
else if (size.width >= 850 && tablet != null) {
|
||||
return tablet!;
|
||||
}
|
||||
// Or less then that we called it mobile
|
||||
else {
|
||||
return mobile;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user