loclization

main_design2.0
nextwo 2 years ago
parent 63cbbe48d1
commit 4ec0b27afa

@ -11,4 +11,5 @@ extension BuildContextExtension on BuildContext {
List<String> get getIssues => [translation.reason1, translation.reason2, translation.reason3, translation.reason4, translation.reason5];
bool get isDark => Provider.of<SettingProvider>(this).theme == "dark";
bool get isAr => Provider.of<SettingProvider>(this).language == "ar";
}

@ -306,5 +306,49 @@
"requesterName" : "اسم الطالب",
"updateWorkOrder" : "تعديل طلب العمل",
"createPreventiveMaintenanceRequest" : "إنشاء طلب صيانة وقائية",
"createNewRequest" : "إنشاء طلب جديد"
"createNewRequest" : "إنشاء طلب جديد",
"helpCenter" : "مركز المساعدة",
"rateUs": "قيمنا",
"settings" : " الاعدادات",
"reportBg" : "ابلاغ عن خطا",
"whatsNew" : "ماهو الجديد",
"logout" : "خروج",
"arabic" : "عربي",
"lightTheme" : "وضع النهاري",
"myProfile" : "الملف الشخصي",
"viewDetails" : "عرض التفاصيل",
"requests" : "طلبات",
"highPriorityRequests" : "طلبات ذات\nاولوية عاليه",
"newRequests" : " طلبات\nجديدة",
"completedRequests" : "طلبات\nمكتملة",
"overdueRequests": "طلبات\nمتاخره",
"highPriority" : "اولوية عالية",
"lowPriority" : "اولوية منخفضة",
"inProgress": "قيد التنفيذ",
"completed" : "مكتملة",
"open" : "مفتوح",
"requestType":"نوع الطلب",
"requestNo": "رقم الطلب",
"assignedTo" : "تعيين الى",
"viewComments" : "عرض التعليقات",
"viewWorkOrder" : "عرض جميع طلبات العمل",
"serviceDetails": "تفاصيل الخدمات",
"waitingForQuotation" : "في انتظار السؤال",
"gasRequest" : "طلب غاز",
"createWorkOrder" : "إنشاء طلب عمل",
"commentHere" : "علق هنا",
"nurseSignature" : "توقيع الممرض",
"actualVisitDate": "تاريخ الزيارة الفعلي",
"ppmVisit": "موعد زيارة الصيانة الوقائية",
"timer": "مؤقت",
"deviceStatus" : "حالة الجهاز",
"addAsset" : "اضافة جهاز",
"calibrationDate" : "موعد المعايرة",
"asset" : "جهاز",
"addItem" : "اضافة عنصر",
"item" : "عنصر",
"serialNo" : "رقم التسلسلي",
"measuredValue": "القيمة المقاسه"
}

@ -150,6 +150,7 @@
"updateVisitsGroup": "Update Visits Group",
"updatingDots": "Updating ...",
"expectedVisitDate": "Next Visit Date",
"actualVisitDate": "Actual Visit Date",
"visitInformation": "Visit Information",
"travelingHours": "Traveling Hours",
"workingHours": "Working Hours",
@ -261,7 +262,6 @@
"workOrders" : "Work Orders",
"viewWorkOrder" : "View All Work Order",
"createWorkOrder" : "Create Work Order",
"viewWorkOrder" : "View All Work Order",
"serviceDetails": "Service Details",
"priority" : "Priority",
"equipmentStatus" : "Equipment Status",
@ -310,5 +310,45 @@
"requesterName" : "Requester Name",
"updateWorkOrder" : "Update Work Order",
"createPreventiveMaintenanceRequest" : "Create Preventive Maintenance Request",
"createNewRequest" : "Create New Request"
"createNewRequest" : "Create New Request",
"helpCenter" : "Help Center",
"rateUs": "Rate Us",
"settings" : "Settings",
"reportBg" : "Report a bug",
"whatsNew" : "What's New",
"logout" : "Logout",
"arabic" : "Arabic",
"lightTheme" : "Light Theme",
"myProfile" : "My Profile",
"viewDetails" : "View Details",
"requests" : "Requests",
"highPriorityRequests" : "High Priority\nRequests",
"newRequests" : "New Request\nRequests",
"completedRequests" : "completed\nRequests",
"overdueRequests": "overdue\nRequests",
"highPriority" : "High Priority",
"lowPriority" : "Low Priority",
"inProgress": "In Progress",
"completed" : "completed",
"open" : "Open",
"requestType":"Request Type",
"requestNo": "Request No",
"assignedTo" : "Assigned To",
"waitingForQuotation" : "Waiting for quotation",
"gasRequest" : "Gas Request",
"viewComments" : "View Comments",
"commentHere" : "Comment Here",
"nurseSignature" : "Nurse Signature",
"ppmVisit": "PPM Visit Status",
"timer": "Timer",
"deviceStatus" : "Device Status",
"addAsset" : "Add Asset",
"calibrationDate" : "Calibration Date",
"asset" : "Asset",
"addItem" : "Add Item",
"item" : "Item",
"measuredValue": "Measured Value"
}

@ -57,22 +57,31 @@ class AppDrawer extends StatelessWidget {
18.height,
1.divider,
ListView(
// "settings" : " Settings",
// "ReportBug " : "Report a bug",
// "whatsNew" : "What's New",
// "logout" : "Logout"
// "settings" : " الاعدادات",
// "ReportBug " "ابلاغ عن خطا",
// "whatsNew" : "ماهو الجديد",
// "logout" : "خروج"
padding: const EdgeInsets.only(top: 24),
children: [
drawerItem("drawer_notification", "Notification").onPress(() => Navigator.of(context).pushNamed(NotificationsPage.id)),
drawerItem("drawer_notification", context.translation.notifications).onPress(() => Navigator.of(context).pushNamed(NotificationsPage.id)),
18.height,
drawerItem("help_center", "Help Center") /*.onPress(() => Navigator.of(context).pushNamed(HelpCenterPage.id))*/,
drawerItem("help_center", context.translation.helpCenter) /*.onPress(() => Navigator.of(context).pushNamed(HelpCenterPage.id))*/,
18.height,
drawerItem("rate_us", "Rate Us"),
drawerItem("rate_us", context.translation.rateUs),
18.height,
drawerItem("setting", "Settings").onPress(() => Navigator.of(context).pushNamed(SettingsPage.id)),
drawerItem("setting", context.translation.settings).onPress(() => Navigator.of(context).pushNamed(SettingsPage.id)),
18.height,
drawerItem("report", "Report a bug") /*.onPress(() => Navigator.of(context).pushNamed(ReportBugPage.id))*/,
drawerItem("report", context.translation.reportBg) /*.onPress(() => Navigator.of(context).pushNamed(ReportBugPage.id))*/,
18.height,
drawerItem("whats_new", "What's New"),
drawerItem("whats_new", context.translation.whatsNew),
],
).expanded,
drawerItem("logout", "Logout", color: AppColor.red50).onPress(() async {
drawerItem("logout", context.translation.logout, color: AppColor.red50).onPress(() async {
bool result = await showDialog(
context: context,
builder: (_) => AAlertDialog(title: context.translation.signOut, content: context.translation.logoutAlert),

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
@ -18,16 +19,16 @@ class RequestsFragment extends StatelessWidget {
padding: const EdgeInsets.only(left: 16, right: 16, bottom: 16),
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 191 / 237, crossAxisSpacing: 16, mainAxisSpacing: 16),
children: [
gridItem("12", "high_priority", "High Priority\nRequests"),
gridItem("12", "overdue", "Overdue\nRequests"),
gridItem("12", "new_request", "New\nRequests"),
gridItem("12", "complete_request", "Completed\nRequests"),
gridItem("12", "high_priority",context.translation.highPriorityRequests,context),
gridItem("12", "overdue", context.translation.overdueRequests,context),
gridItem("12", "new_request", context.translation.newRequests,context),
gridItem("12", "complete_request", context.translation.completedRequests ,context),
],
),
);
}
Widget gridItem(String value, String icon, String title) {
Widget gridItem(String value, String icon, String title, BuildContext context) {
return Container(
padding: const EdgeInsets.all(16),
decoration: ShapeDecoration(
@ -66,7 +67,7 @@ class RequestsFragment extends StatelessWidget {
mainAxisSize: MainAxisSize.min,
children: [
Text(
'View Details',
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_advanced_switch/flutter_advanced_switch.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
@ -34,8 +35,8 @@ class _SettingsPageState extends State<SettingsPage> {
langController ??= ValueNotifier<bool>(_settingProvider.language == "ar")
..addListener(() async {
/// TODO : uncomment the below lines to support the another language
// await _settingProvider.setLanguage(_settingProvider.language == "ar" ? "en" : "ar");
// langController.value = _settingProvider.language == "ar";
await _settingProvider.setLanguage(_settingProvider.language == "ar" ? "en" : "ar");
langController.value = _settingProvider.language == "ar";
});
themeController ??= ValueNotifier<bool>(_settingProvider.theme == "light")
..addListener(() async {
@ -43,7 +44,7 @@ class _SettingsPageState extends State<SettingsPage> {
themeController.value = _settingProvider.theme == "light";
});
return Scaffold(
appBar: const DefaultAppBar(title: "Settings"),
appBar: DefaultAppBar(title: context.translation.settings),
body: Card(
child: Column(
mainAxisSize: MainAxisSize.min,
@ -51,7 +52,7 @@ class _SettingsPageState extends State<SettingsPage> {
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
"Arabic".heading5(context),
context.translation.arabic.heading5(context),
AdvancedSwitch(
controller: langController,
activeColor: AppColor.green50.withOpacity(0.5),
@ -62,7 +63,7 @@ class _SettingsPageState extends State<SettingsPage> {
height: 24.toScreenHeight,
/// TODO : remove the below attribute to enable the switch
enabled: false,
//enabled: false,
disabledOpacity: 1,
),
],
@ -73,7 +74,7 @@ class _SettingsPageState extends State<SettingsPage> {
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
"Light Theme".heading5(context),
context.translation.lightTheme.heading5(context),
AdvancedSwitch(
controller: themeController,
activeColor: AppColor.green50.withOpacity(0.5),

@ -153,16 +153,17 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
///TBD
Text(
'Gas Request:',
context.translation.gasRequest,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'Cylinder Size: ${widget.model.gazRefillDetails[0].cylinderSize.value}',
'${context.translation.cylinderSize}: ${widget.model.gazRefillDetails[0].cylinderSize.value}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'Site: ${widget.model.site.name}',
'${context.translation.site}: ${widget.model.site.name}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
],
@ -174,11 +175,11 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height,
Text(
'Request Quantity: ${widget.model.gazRefillDetails[0].requestedQty}',
'${context.translation.requestedQuantity}: ${widget.model.gazRefillDetails[0].requestedQty}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'Delivered Quantity: ${widget.model.gazRefillDetails[0].deliverdQty}',
'${context.translation.deliveredQuantity}: ${widget.model.gazRefillDetails[0].deliverdQty}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
8.height,
@ -203,7 +204,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
child: Row(
children: [
Text(
'Comment here...',
'${context.translation.commentHere}...',
style: AppTextStyles.heading6.copyWith(
color: AppColor.neutral50.withOpacity(.6),
),
@ -222,7 +223,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
mainAxisSize: MainAxisSize.min,
children: [
Text(
'View Comments',
'${context.translation.viewComments}',
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,

@ -44,7 +44,7 @@ class _ProfilePageState extends State<ProfilePage> {
}
return Scaffold(
key: _scaffoldKey,
appBar: const DefaultAppBar(title: "My Profile"),
appBar: DefaultAppBar(title: context.translation.myProfile),
body: LoadingManager(
isLoading: _userProvider.isLoading,
isFailedLoading: false,

@ -94,11 +94,11 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'Request Type: ${widget.serviceRequest.type.name}',
'${context.translation.requestType}: ${widget.serviceRequest.type.name}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'Request No: ${widget.serviceRequest.requestCode}',
'${context.translation.requestNo}: ${widget.serviceRequest.requestCode}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
],
@ -107,7 +107,7 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
crossAxisAlignment: CrossAxisAlignment.end,
children: [
if (_userProvider.user.type == UsersTypes.normal_user)
"edit".toSvgAsset(width: 48).onPress(() {
context.translation.code.toSvgAsset(width: 48).onPress(() {
Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: widget.serviceRequest)));
}),
if (_userProvider.user.type == UsersTypes.engineer) 16.height,
@ -120,11 +120,11 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height,
Text(
'Manufacture: ${widget.serviceRequest.device.modelDefinition.manufacturerName}',
'${context.translation.manufacture}: ${widget.serviceRequest.device.modelDefinition.manufacturerName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'Model: ${widget.serviceRequest.device.modelDefinition.modelName}',
'${context.translation.model}: ${widget.serviceRequest.device.modelDefinition.modelName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
8.height,
@ -166,7 +166,7 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
child: Row(
children: [
Text(
'Comment here...',
'${context.translation.viewComments}...',
style: AppTextStyles.heading6.copyWith(
color: AppColor.neutral50.withOpacity(.6),
),
@ -185,7 +185,7 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
mainAxisSize: MainAxisSize.min,
children: [
Text(
'View Comments',
context.translation.viewComments,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,

@ -67,7 +67,7 @@ class WorkOrderDetailsPage extends StatelessWidget {
Text('${context.translation.assetNumber}: ${workOrder.callRequest.asset.assetNumber ?? ""}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.model}: ${workOrder.callRequest.asset.modelDefinition.modelName ?? ""}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.site}: ${workOrder.callRequest.asset.site.custName ?? ""}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${"Call last Situation"}: ${workOrder.calllastSituation.name ?? '' ?? ""}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.callLastSituation}: ${workOrder.calllastSituation.name ?? '' ?? ""}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
],
).paddingAll(16),
),

@ -84,7 +84,7 @@ class WorkOrderListPage extends StatelessWidget {
],
).expanded,
if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)
"edit".toSvgAsset(height: 48, width: 48).onPress(() {
context.translation.edit.toSvgAsset(height: 48, width: 48).onPress(() {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])),
);
@ -117,7 +117,7 @@ class WorkOrderListPage extends StatelessWidget {
mainAxisSize: MainAxisSize.min,
children: [
Text(
'View Details',
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,

@ -64,15 +64,15 @@ class VisitDetailsPage extends StatelessWidget {
Text(visit.deviceEnglishName, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
8.height,
Text('${context.translation.assetNumber}: ${visit.deviceNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('Asset Serial No.: ${visit.deviceSerialNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('Code: ${visit.serialNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.assetSN}: ${visit.deviceSerialNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.code}: ${visit.serialNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
const Divider().defaultStyle(context),
Text('Expected Date: ${visit.expectDate?.toServiceRequestDetailsFormat}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('Actual Date: ${visit.actualDate?.toServiceRequestDetailsFormat}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.expectDate}: ${visit.expectDate?.toServiceRequestDetailsFormat}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.actualDate}: ${visit.actualDate?.toServiceRequestDetailsFormat}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
const Divider().defaultStyle(context),
Text('Assigned to: ${visit.assignTo}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('Engineer Name: ${visit.employName}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('Site: ${visit.hospitalName}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.assignedTo}: ${visit.assignTo}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.engineerName}: ${visit.employName}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.site}: ${visit.hospitalName}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
],
).paddingAll(16),
),

@ -68,7 +68,7 @@ class DeviceTransferItem extends StatelessWidget {
mainAxisSize: MainAxisSize.min,
children: [
Text(
'View Details',
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,

@ -1,5 +1,6 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
class AAlertDialog extends StatelessWidget {
final String title;
@ -16,14 +17,14 @@ class AAlertDialog extends StatelessWidget {
actions: <Widget>[
TextButton(
// child: Text(_subtitle.confirm),
child: const Text("Confirm"),
child: Text(context.translation.confirm),
onPressed: () {
Navigator.of(context).pop(true);
},
),
TextButton(
// child: Text(_subtitle.cancel),
child: const Text("Cancel"),
child: Text(context.translation.cancel),
onPressed: () {
Navigator.of(context).pop(false);
},

@ -74,7 +74,7 @@ class AssetItemListView extends StatelessWidget {
mainAxisSize: MainAxisSize.min,
children: [
Text(
'View Details',
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,

@ -125,7 +125,7 @@ class _SingleDevicePickerState extends State<SingleDevicePicker> {
})),
16.width,
Text(
'Filter',
context.translation.filter,
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
).onPress(() async {
final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => AssetFilterScreen(data: _searchAsset)));

@ -54,7 +54,7 @@ class GasRefillItem extends StatelessWidget {
8.height,
Text(context.translation.gasRefillRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
Text(
'Gas Type: ${item.gazRefillDetails[0].gasType.name}',
'${context.translation.gasType}: ${item.gazRefillDetails[0].gasType.name}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
@ -66,7 +66,7 @@ class GasRefillItem extends StatelessWidget {
mainAxisSize: MainAxisSize.min,
children: [
Text(
'View Details',
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class FailedLoading extends StatelessWidget {
@ -14,7 +15,7 @@ class FailedLoading extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
message ?? "Error Request Failed",
message ?? context.translation.httpError,
style: Theme.of(context).textTheme.subtitle1,
textScaleFactor: AppStyle.getScaleFactor(context),
),
@ -22,7 +23,7 @@ class FailedLoading extends StatelessWidget {
height: 16,
),
OutlinedButton(
child: Text("try again"),
child: Text(context.translation.tryAgain),
onPressed: onReload,
)
],

@ -31,7 +31,7 @@ class _PentryCalibrationToolFormState extends State<PentryCalibrationToolForm> {
itemBuilder: (context, index) {
if (index == widget.models.length) {
return AppFilledButton(
label: "Add Asset",
label: context.translation.addAsset,
maxWidth: true,
textColor: Colors.white,
buttonColor: context.isDark ? AppColor.neutral60 : AppColor.neutral50,
@ -56,7 +56,7 @@ class _PentryCalibrationToolFormState extends State<PentryCalibrationToolForm> {
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
"Asset ${index + 1}".heading5(context),
"${context.translation.asset} ${index + 1}".heading5(context),
"trash".toSvgAsset(height: 20, width: 15).onPress(() {
widget.models.remove(model);
setState(() {});
@ -73,7 +73,7 @@ class _PentryCalibrationToolFormState extends State<PentryCalibrationToolForm> {
),
8.height,
ADatePicker(
label: "Calibration Date",
label: context.translation.calibrationDate,
date: model.dataOfTesting,
onDatePicker: (date) {
model.dataOfTesting = date;

@ -36,7 +36,7 @@ class _PentryPMKitFormState extends State<PentryPMKitForm> {
itemBuilder: (context, index) {
if (index == widget.models.length) {
return AppFilledButton(
label: "Add Item",
label: context.translation.addItem,
maxWidth: true,
textColor: Colors.white,
buttonColor: context.isDark ? AppColor.neutral60 : AppColor.neutral50,
@ -62,7 +62,7 @@ class _PentryPMKitFormState extends State<PentryPMKitForm> {
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
"Item ${index + 1}".heading5(context),
"${context.translation.item} ${index + 1}".heading5(context),
"trash".toSvgAsset(width: 15, height: 20).onPress(() {
widget.models.remove(model);
setState(() {});

@ -30,13 +30,13 @@ class _PentryPMChecklistFormState extends State<PentryPMChecklistForm> {
child: ExpansionTile(
shape: const Border(),
title: (model.title ?? "").heading5(context),
subtitle: "Status ${model.status?.name}".bodyText(context),
subtitle: "${context.translation.status} ${model.status?.name}".bodyText(context),
initiallyExpanded: index == 0,
iconColor: AppColor.neutral50,
collapsedIconColor: AppColor.neutral50,
childrenPadding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
children: [
AppTextFormField(labelText: "Measured Value", initialValue: model.measuredValue, enable: false),
AppTextFormField(labelText: context.translation.measuredValue, initialValue: model.measuredValue, enable: false),
8.height,
AppTextFormField(labelText: context.translation.comment, initialValue: model.comment, enable: false),
8.height,

@ -41,7 +41,7 @@ class _PentryTBSFormState extends State<PentryTBSForm> {
SingleItemDropDownMenu<Lookup, PPMVisitStatusProvider>(
context: context,
initialValue: widget.model.ppmVisitStatus,
title: "PPM Visit Status",
title: context.translation.ppmVisit,
onSelect: (value) {
if (value != null) {
widget.model.ppmVisitStatus = value;
@ -50,6 +50,7 @@ class _PentryTBSFormState extends State<PentryTBSForm> {
),
8.height,
AppTimer(
label: context.translation.timer,
timer: widget.model.timer,
enabled: widget.model.timer.endAt == null,
onChange: (timer) async {
@ -61,7 +62,7 @@ class _PentryTBSFormState extends State<PentryTBSForm> {
SingleItemDropDownMenu<Lookup, PPMDeviceStatusProvider>(
context: context,
initialValue: widget.model.status,
title: "Device Status",
title: context.translation.deviceStatus,
onSelect: (value) {
if (value != null) {
widget.model.status = value;
@ -70,7 +71,7 @@ class _PentryTBSFormState extends State<PentryTBSForm> {
),
8.height,
ADatePicker(
label: "Actual Visit Date",
label: context.translation.actualVisitDate,
date: widget.model.actualVisitDate,
from: DateTime.now().subtract(const Duration(days: 30)),
onDatePicker: (date) {
@ -81,7 +82,7 @@ class _PentryTBSFormState extends State<PentryTBSForm> {
),
8.height,
ADatePicker(
label: "Expected Visit Date",
label: context.translation.expectedVisitDate,
date: widget.model.expectedVisitDate,
from: DateTime.now().subtract(const Duration(days: 30)),
onDatePicker: (date) {
@ -105,7 +106,7 @@ class _PentryTBSFormState extends State<PentryTBSForm> {
// },
// ),
8.height,
MultiFilesPicker(label: "Attach Image", files: widget.model.files),
MultiFilesPicker(label: context.translation.attachImage, files: widget.model.files),
// AMiniOneFilePicker(
// //error: _validate && _serviceReport.image == null,
// file: widget.model.file,
@ -115,7 +116,7 @@ class _PentryTBSFormState extends State<PentryTBSForm> {
// ),
8.height,
ESignature(
title: "Nurse Signature",
title: context.translation.nurseSignature,
oldSignature: widget.model.signatureNurse,
newSignature: widget.model.localNurseSignature,
onChange: (signature) {

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
@ -14,8 +15,13 @@ class StatusLabel extends StatelessWidget {
@override
Widget build(BuildContext context) {
if (id == 82) label = "High Priority";
if (id == 81) label = "Low Priority";
if (id == 82) label = context.translation.highPriority;
if (id == 81) label = context.translation.lowPriority;
if (label.toLowerCase() == 'In progress'.toLowerCase()) label = context.translation.inProgress;
if (label.toLowerCase() == 'Complete'.toLowerCase()) label = context.translation.completed;
if (label.toLowerCase() == 'Open'.toLowerCase()) label = context.translation.open;
if (label.toLowerCase() == 'Closed'.toLowerCase()) label = context.translation.closed;
if (label.toLowerCase() == 'Waiting for quotation'.toLowerCase()) label = context.translation.waitingForQuotation;
print("label:$label:$id");
return Container(
@ -26,7 +32,7 @@ class StatusLabel extends StatelessWidget {
borderRadius: BorderRadius.circular(50),
),
),
child: Text(label.toUpperCase(), style: AppTextStyles.overline.copyWith(color: textColor)),
child: Text(label, style: AppTextStyles.overline.copyWith(color: textColor)),
);
}

@ -70,11 +70,11 @@ class ServiceRequestItem extends StatelessWidget {
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'Request Type: ${request.type.name}',
'${context.translation.requestType}: ${request.type.name}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'Request No: ${request.requestCode}',
'${context.translation.requestNo}: ${request.requestCode}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
8.height,
@ -82,7 +82,7 @@ class ServiceRequestItem extends StatelessWidget {
mainAxisSize: MainAxisSize.min,
children: [
Text(
'View Details',
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,

@ -61,11 +61,11 @@ class VisitItem extends StatelessWidget {
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)),
),
Text(
'Asset Serial No.: ${visit.deviceSerialNumber}',
'${context.translation.assetSN}: ${visit.deviceSerialNumber}',
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)),
),
Text(
'Code: ${visit.serialNumber}',
'${context.translation.code}: ${visit.serialNumber}',
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)),
),
16.height,
@ -73,7 +73,7 @@ class VisitItem extends StatelessWidget {
mainAxisSize: MainAxisSize.min,
children: [
Text(
'View Details',
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,
@ -88,7 +88,7 @@ class VisitItem extends StatelessWidget {
Column(
children: [
if (userProvider.user.type == UsersTypes.engineer && visit.status.value != 5 && visit.status.value != 3)
"edit".toSvgAsset(height: 48, width: 48).onPress(() {
context.translation.edit.toSvgAsset(height: 48, width: 48).onPress(() {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => EditPentry(visit: visit, pentry: visit.pentry)));
}),
Text(visit.createdOn != null ? visit.createdOn.toServiceRequestCardFormat : "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),

Loading…
Cancel
Save