birzha_mobile/lib/models/settings/settingsModel.dart

247 lines
13 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
const kDefaultLanguage = 'tk';
class SettingsModel extends ChangeNotifier {
String _language = kDefaultLanguage;
bool pushEnabled = true;
static AppLocalizations? _localization;
static Future<void> initLocalization(String l) async {
_localization = await AppLocalizations.delegate.load(Locale(l, l == 'en' ? 'US' : ''));
}
Future<void> setLanguage(String l) async {
_language = l;
await initLocalization(l);
var prefs = await SharedPreferences.getInstance();
await prefs.setString('language', _language);
notifyListeners();
}
Locale get language {
switch (_language) {
case 'ru':
return const Locale('ru', '');
case 'en':
return const Locale('en', 'US');
case 'tk':
return const Locale('tk', '');
default:
return const Locale('tk', '');
}
}
void launch(SharedPreferences prefs) {
_language = prefs.getString('language') ?? _language;
notifyListeners();
}
SettingsModel(SharedPreferences prefs) {
launch(prefs);
}
static SettingsModel of(BuildContext context, [bool listen = false]) {
return Provider.of<SettingsModel>(context, listen: listen);
}
}
extension LocalMessageExt on String {
String get translation {
return <String, String?>{
"yourMessage": SettingsModel._localization?.yourMessage,
"nsm": SettingsModel._localization?.nsm,
"buyNow": SettingsModel._localization?.buyNow,
"uploadReceipt": SettingsModel._localization?.uploadReceipt,
"payOnline": SettingsModel._localization?.payOnline,
"sendMessage": SettingsModel._localization?.sendMessage,
"dataIsUpdated": SettingsModel._localization?.dataIsUpdated,
"personalCabinet": SettingsModel._localization?.personalCabinet,
"addPost": SettingsModel._localization?.addPost,
"iu_company": SettingsModel._localization?.iu_company,
"iu_about": SettingsModel._localization?.iu_about,
"phone_error": SettingsModel._localization?.phone_error,
"email_error": SettingsModel._localization?.email_error,
"username": SettingsModel._localization?.username,
"noAccount": SettingsModel._localization?.noAccount,
"yourPassword": SettingsModel._localization?.yourPassword,
"yourLogin": SettingsModel._localization?.yourLogin,
"yourEmail": SettingsModel._localization?.yourEmail,
"link": SettingsModel._localization?.link,
"loginText": SettingsModel._localization?.loginText,
"expiryDate": SettingsModel._localization?.expiryDate,
"sellerContact": SettingsModel._localization?.sellerContact,
"address": SettingsModel._localization?.address,
"realAddress": SettingsModel._localization?.realAddress,
"mail": SettingsModel._localization?.mail,
"telephone": SettingsModel._localization?.telephone,
"lotNumber": SettingsModel._localization?.lotNumber,
"productNumber": SettingsModel._localization?.productNumber,
"productMark": SettingsModel._localization?.productMark,
"productAmount": SettingsModel._localization?.productAmount,
"startingPrice": SettingsModel._localization?.startingPrice,
"producer": SettingsModel._localization?.producer,
"producerCountry": SettingsModel._localization?.producerCountry,
"description": SettingsModel._localization?.description,
"unit": SettingsModel._localization?.unit,
"paymentTerms": SettingsModel._localization?.paymentTerms,
"deliveryTerms": SettingsModel._localization?.deliveryTerms,
"station": SettingsModel._localization?.station,
"packing": SettingsModel._localization?.packing,
"english": SettingsModel._localization?.english,
"russian": SettingsModel._localization?.russian,
"turkmen": SettingsModel._localization?.turkmen,
"localeLabel": SettingsModel._localization?.localeLabel,
"backendCode": SettingsModel._localization?.backendCode,
"save_changes": SettingsModel._localization?.save_changes,
"email": SettingsModel._localization?.email,
"message": SettingsModel._localization?.message,
"top_up_history": SettingsModel._localization?.top_up_history,
"personal_data": SettingsModel._localization?.personal_data,
"news_feed": SettingsModel._localization?.news_feed,
"feedback": SettingsModel._localization?.feedback,
"privacy_policy": SettingsModel._localization?.privacy_policy,
"contact": SettingsModel._localization?.contact,
"home": SettingsModel._localization?.home,
"category": SettingsModel._localization?.category,
"favourites": SettingsModel._localization?.favourites,
"settings": SettingsModel._localization?.settings,
"login": SettingsModel._localization?.login,
"phone": SettingsModel._localization?.phone,
"password": SettingsModel._localization?.password,
"or": SettingsModel._localization?.or,
"register": SettingsModel._localization?.register,
"first_name": SettingsModel._localization?.first_name,
"last_name": SettingsModel._localization?.last_name,
"lang": SettingsModel._localization?.lang,
"phoneValidator": SettingsModel._localization?.phoneValidator,
"empty": SettingsModel._localization?.empty,
"forgot": SettingsModel._localization?.forgot,
"search": SettingsModel._localization?.search,
'cart': SettingsModel._localization?.cart,
'addToCart': SettingsModel._localization?.addToCart,
'addedToCart': SettingsModel._localization?.addedToCart,
"removedFromCart": SettingsModel._localization?.removedFromCart,
"inCart": SettingsModel._localization?.inCart,
"allPrice": SettingsModel._localization?.allPrice,
'wantDelete': SettingsModel._localization?.wantDelete,
'hit': SettingsModel._localization?.hit,
'newGoods': SettingsModel._localization?.newGoods,
"emptyPosts": SettingsModel._localization?.emptyPosts,
"order": SettingsModel._localization?.order,
"account": SettingsModel._localization?.account,
"otherException": SettingsModel._localization?.otherException,
"password_confirmation": SettingsModel._localization?.password_confirmation,
"password_confirmation_error": SettingsModel._localization?.password_confirmation_error,
'profile': SettingsModel._localization?.profile,
"unauthenticated": SettingsModel._localization?.unauthenticated,
"needToEnter": SettingsModel._localization?.needToEnter,
"logout": SettingsModel._localization?.logout,
"logging_out": SettingsModel._localization?.logging_out,
"sure_log_out": SettingsModel._localization?.sure_log_out,
"date": SettingsModel._localization?.date,
"status": SettingsModel._localization?.status,
"products": SettingsModel._localization?.products,
"smsCodeSent": SettingsModel._localization?.smsCodeSent,
"codeLabel": SettingsModel._localization?.codeLabel,
"passwordError": SettingsModel._localization?.passwordError,
"verify": SettingsModel._localization?.verify,
"sendingCode": SettingsModel._localization?.sendingCode,
"sendCode": SettingsModel._localization?.sendCode,
"rules": SettingsModel._localization?.rules,
"agree": SettingsModel._localization?.agree,
"about": SettingsModel._localization?.about,
"quantitySumm": SettingsModel._localization?.quantitySumm,
"enterQuantity": SettingsModel._localization?.enterQuantity,
"formatError": SettingsModel._localization?.formatError,
"tapToLoadMore": SettingsModel._localization?.tapToLoadMore,
"similiarProducts": SettingsModel._localization?.similiarProducts,
"dialCode": SettingsModel._localization?.dialCode,
"verificationMailSent": SettingsModel._localization?.verificationMailSent,
"verifyMail": SettingsModel._localization?.verifyMail,
"verifyPhone": SettingsModel._localization?.verifyPhone,
"sms_code": SettingsModel._localization?.sms_code,
"check": SettingsModel._localization?.check,
"myProducts": SettingsModel._localization?.myProducts,
"firstStep": SettingsModel._localization?.firstStep,
"addPosts": SettingsModel._localization?.addPosts,
"addPostName": SettingsModel._localization?.addPostName,
"mark": SettingsModel._localization?.mark,
"manufacturer": SettingsModel._localization?.manufacturer,
"marketType": SettingsModel._localization?.marketType,
"country": SettingsModel._localization?.country,
"inMarket": SettingsModel._localization?.inMarket,
"outMarket": SettingsModel._localization?.outMarket,
"addPostDescription": SettingsModel._localization?.addPostDescription,
"price": SettingsModel._localization?.price,
"place": SettingsModel._localization?.place,
"quantity": SettingsModel._localization?.quantity,
"measure": SettingsModel._localization?.measure,
"currency": SettingsModel._localization?.currency,
"paymentTerm": SettingsModel._localization?.paymentTerm,
"deliveryTerm": SettingsModel._localization?.deliveryTerm,
"secondStep": SettingsModel._localization?.secondStep,
"packaging": SettingsModel._localization?.packaging,
"yes": SettingsModel._localization?.yes,
"no": SettingsModel._localization?.no,
"notANumber": SettingsModel._localization?.notANumber,
"selectImages": SettingsModel._localization?.selectImages,
"localImages": SettingsModel._localization?.localImages,
"selectAtLeastImage": SettingsModel._localization?.selectAtLeastImage,
"statusNote": SettingsModel._localization?.statusNote,
"draft": SettingsModel._localization?.draft,
"approved": SettingsModel._localization?.approved,
"denied": SettingsModel._localization?.denied,
"published": SettingsModel._localization?.published,
"none": SettingsModel._localization?.none,
"edit": SettingsModel._localization?.edit,
"approve": SettingsModel._localization?.approve,
"loadedImages": SettingsModel._localization?.loadedImages,
"legalizationNumber": SettingsModel._localization?.legalizationNumber,
"newPassword": SettingsModel._localization?.newPassword,
"newPasswordConfirmation": SettingsModel._localization?.newPasswordConfirmation,
"phoneConfirmation": SettingsModel._localization?.phoneConfirmation,
"smsSentInfo": SettingsModel._localization?.smsSentInfo,
"enterSmsCode": SettingsModel._localization?.enterSmsCode,
"confirm": SettingsModel._localization?.confirm,
"verifyPhoneWarning": SettingsModel._localization?.verifyPhoneWarning,
"verifyEmailWarning": SettingsModel._localization?.verifyEmailWarning,
"topUpBalance": SettingsModel._localization?.topUpBalance,
"selectPaymentMethod": SettingsModel._localization?.selectPaymentMethod,
"bankTransfer": SettingsModel._localization?.bankTransfer,
"selectFile": SettingsModel._localization?.selectFile,
"upload": SettingsModel._localization?.upload,
"fileNotSelected": SettingsModel._localization?.fileNotSelected,
"send": SettingsModel._localization?.send,
"reminderInfo": SettingsModel._localization?.reminderInfo,
"taxCode": SettingsModel._localization?.taxCode,
"manatAccount": SettingsModel._localization?.manatAccount,
"corrAccount": SettingsModel._localization?.corrAccount,
"bankAddress": SettingsModel._localization?.bankAddress,
"selectBank": SettingsModel._localization?.selectBank,
"transferAmount": SettingsModel._localization?.transferAmount,
"enterAmount": SettingsModel._localization?.enterAmount,
"searchShort": SettingsModel._localization?.searchShort,
"newsNotFount": SettingsModel._localization?.newsNotFount,
"errorOccurred": SettingsModel._localization?.errorOccurred,
"registeredDate": SettingsModel._localization?.registeredDate,
"filters": SettingsModel._localization?.filters,
"selectCategory": SettingsModel._localization?.selectCategory,
"selectUnit": SettingsModel._localization?.selectUnit,
"selectCurrency": SettingsModel._localization?.selectCurrency,
"selectPayment": SettingsModel._localization?.selectPayment,
"selectSendType": SettingsModel._localization?.selectSendType,
"selectCountry": SettingsModel._localization?.selectCountry,
"clear": SettingsModel._localization?.clear,
"apply": SettingsModel._localization?.apply,
"importPrice": SettingsModel._localization?.importPrice,
"quotes": SettingsModel._localization?.quotes,
"notFound": SettingsModel._localization?.notFound,
}[this] ??
this;
}
}