diff --git a/assets/property_icons/timezone.svg b/assets/property_icons/timezone.svg
new file mode 100644
index 00000000..e45b33bc
--- /dev/null
+++ b/assets/property_icons/timezone.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/assets/property_icons/timezone_filled.svg b/assets/property_icons/timezone_filled.svg
new file mode 100644
index 00000000..1495bced
--- /dev/null
+++ b/assets/property_icons/timezone_filled.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/lib/data/default_order.dart b/lib/data/default_order.dart
index bfc6b09f..ee696f2c 100644
--- a/lib/data/default_order.dart
+++ b/lib/data/default_order.dart
@@ -1,3 +1,4 @@
+import 'package:converterpro/models/time_zone_property.dart';
import 'package:converterpro/utils/utils.dart';
import 'package:units_converter/units_converter.dart';
@@ -7,6 +8,7 @@ const defaultPropertiesOrder = [
PROPERTYX.volume,
PROPERTYX.currencies,
PROPERTYX.time,
+ PROPERTYX.timezone,
PROPERTYX.temperature,
PROPERTYX.speed,
PROPERTYX.mass,
@@ -313,4 +315,44 @@ const Map> defaultUnitsOrder = {
TORQUE.poundForceInch,
TORQUE.poundalMeter,
],
+ PROPERTYX.timezone: [
+ TIMEZONE.utcMinus12,
+ TIMEZONE.utcMinus11,
+ TIMEZONE.utcMinus10,
+ TIMEZONE.utcMinus9_30,
+ TIMEZONE.utcMinus9,
+ TIMEZONE.utcMinus8,
+ TIMEZONE.utcMinus7,
+ TIMEZONE.utcMinus6,
+ TIMEZONE.utcMinus5,
+ TIMEZONE.utcMinus4,
+ TIMEZONE.utcMinus3_30,
+ TIMEZONE.utcMinus3,
+ TIMEZONE.utcMinus2,
+ TIMEZONE.utcMinus1,
+ TIMEZONE.utc0,
+ TIMEZONE.utcPlus1,
+ TIMEZONE.utcPlus2,
+ TIMEZONE.utcPlus3,
+ TIMEZONE.utcPlus3_30,
+ TIMEZONE.utcPlus4,
+ TIMEZONE.utcPlus4_30,
+ TIMEZONE.utcPlus5,
+ TIMEZONE.utcPlus5_30,
+ TIMEZONE.utcPlus5_45,
+ TIMEZONE.utcPlus6,
+ TIMEZONE.utcPlus6_30,
+ TIMEZONE.utcPlus7,
+ TIMEZONE.utcPlus8,
+ TIMEZONE.utcPlus8_45,
+ TIMEZONE.utcPlus9,
+ TIMEZONE.utcPlus9_30,
+ TIMEZONE.utcPlus10,
+ TIMEZONE.utcPlus10_30,
+ TIMEZONE.utcPlus11,
+ TIMEZONE.utcPlus12,
+ TIMEZONE.utcPlus12_45,
+ TIMEZONE.utcPlus13,
+ TIMEZONE.utcPlus14,
+ ],
};
diff --git a/lib/data/property_unit_maps.dart b/lib/data/property_unit_maps.dart
index a58eb69e..093a4367 100644
--- a/lib/data/property_unit_maps.dart
+++ b/lib/data/property_unit_maps.dart
@@ -1,3 +1,4 @@
+import 'package:converterpro/models/time_zone_property.dart';
import 'package:flutter/cupertino.dart';
import 'package:translations/app_localizations.dart';
import 'package:units_converter/units_converter.dart';
@@ -16,6 +17,7 @@ Map getPropertyUiMap(BuildContext context) {
PROPERTYX.volume: l10n.volume,
PROPERTYX.currencies: l10n.currencies,
PROPERTYX.time: l10n.time,
+ PROPERTYX.timezone: l10n.timezone,
PROPERTYX.temperature: l10n.temperature,
PROPERTYX.speed: l10n.speed,
PROPERTYX.mass: l10n.mass,
@@ -337,5 +339,45 @@ Map> getUnitUiMap(BuildContext context) {
TORQUE.poundForceInch: l10n.poundForceInch,
TORQUE.poundalMeter: l10n.poundalMeter,
},
+ PROPERTYX.timezone: {
+ TIMEZONE.utcMinus12: l10n.utcMinus12,
+ TIMEZONE.utcMinus11: l10n.utcMinus11,
+ TIMEZONE.utcMinus10: l10n.utcMinus10,
+ TIMEZONE.utcMinus9_30: l10n.utcMinus9_30,
+ TIMEZONE.utcMinus9: l10n.utcMinus9,
+ TIMEZONE.utcMinus8: l10n.utcMinus8,
+ TIMEZONE.utcMinus7: l10n.utcMinus7,
+ TIMEZONE.utcMinus6: l10n.utcMinus6,
+ TIMEZONE.utcMinus5: l10n.utcMinus5,
+ TIMEZONE.utcMinus4: l10n.utcMinus4,
+ TIMEZONE.utcMinus3_30: l10n.utcMinus3_30,
+ TIMEZONE.utcMinus3: l10n.utcMinus3,
+ TIMEZONE.utcMinus2: l10n.utcMinus2,
+ TIMEZONE.utcMinus1: l10n.utcMinus1,
+ TIMEZONE.utc0: l10n.utc0,
+ TIMEZONE.utcPlus1: l10n.utcPlus1,
+ TIMEZONE.utcPlus2: l10n.utcPlus2,
+ TIMEZONE.utcPlus3: l10n.utcPlus3,
+ TIMEZONE.utcPlus3_30: l10n.utcPlus3_30,
+ TIMEZONE.utcPlus4: l10n.utcPlus4,
+ TIMEZONE.utcPlus4_30: l10n.utcPlus4_30,
+ TIMEZONE.utcPlus5: l10n.utcPlus5,
+ TIMEZONE.utcPlus5_30: l10n.utcPlus5_30,
+ TIMEZONE.utcPlus5_45: l10n.utcPlus5_45,
+ TIMEZONE.utcPlus6: l10n.utcPlus6,
+ TIMEZONE.utcPlus6_30: l10n.utcPlus6_30,
+ TIMEZONE.utcPlus7: l10n.utcPlus7,
+ TIMEZONE.utcPlus8: l10n.utcPlus8,
+ TIMEZONE.utcPlus8_45: l10n.utcPlus8_45,
+ TIMEZONE.utcPlus9: l10n.utcPlus9,
+ TIMEZONE.utcPlus9_30: l10n.utcPlus9_30,
+ TIMEZONE.utcPlus10: l10n.utcPlus10,
+ TIMEZONE.utcPlus10_30: l10n.utcPlus10_30,
+ TIMEZONE.utcPlus11: l10n.utcPlus11,
+ TIMEZONE.utcPlus12: l10n.utcPlus12,
+ TIMEZONE.utcPlus12_45: l10n.utcPlus12_45,
+ TIMEZONE.utcPlus13: l10n.utcPlus13,
+ TIMEZONE.utcPlus14: l10n.utcPlus14,
+ },
};
}
diff --git a/lib/models/conversions.dart b/lib/models/conversions.dart
index cfb54b92..1dd3e8db 100644
--- a/lib/models/conversions.dart
+++ b/lib/models/conversions.dart
@@ -1,5 +1,6 @@
import 'package:converterpro/models/order.dart';
import 'package:converterpro/models/properties_list.dart';
+import 'package:converterpro/models/time_zone_property.dart';
import 'package:converterpro/utils/utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
@@ -46,10 +47,13 @@ class ConversionsNotifier
signed: false,
),
NUMERAL_SYSTEMS.hexadecimal => TextInputType.text,
- _ => const TextInputType.numberWithOptions(
- decimal: true,
- signed: false,
- ),
+ _ => switch (propertyx) {
+ PROPERTYX.timezone => TextInputType.datetime,
+ _ => const TextInputType.numberWithOptions(
+ decimal: true,
+ signed: false,
+ ),
+ },
},
validator: switch (e) {
TEMPERATURE.celsius ||
@@ -61,7 +65,10 @@ class ConversionsNotifier
NUMERAL_SYSTEMS.octal => VALIDATOR.octal,
NUMERAL_SYSTEMS.decimal => VALIDATOR.decimal,
NUMERAL_SYSTEMS.hexadecimal => VALIDATOR.hexadecimal,
- _ => VALIDATOR.rationalNonNegative,
+ _ => switch (propertyx) {
+ PROPERTYX.timezone => VALIDATOR.time,
+ _ => VALIDATOR.rationalNonNegative,
+ },
},
),
)
@@ -116,7 +123,8 @@ class ConversionsNotifier
///Clears the values of the current page
Future clearAllValues(PROPERTYX property) async {
List currentUnitDataList = state.value![property]!;
- if (currentUnitDataList[0].property == PROPERTYX.numeralSystems) {
+ if (currentUnitDataList[0].property == PROPERTYX.numeralSystems ||
+ currentUnitDataList[0].property == PROPERTYX.timezone) {
_savedUnitDataList = [
...currentUnitDataList.map((unitData) => unitData.unit.stringValue),
];
diff --git a/lib/models/order.dart b/lib/models/order.dart
index 826ee5cb..3b4f9bed 100644
--- a/lib/models/order.dart
+++ b/lib/models/order.dart
@@ -101,7 +101,7 @@ class UnitsOrderNotifier extends AsyncNotifier