247 lines
13 KiB
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;
|
|
}
|
|
}
|