From bf325056e31ded8e1f1b5c7be6b937a3af1255df Mon Sep 17 00:00:00 2001 From: Tim Alenus Date: Fri, 24 Jul 2026 10:04:12 +0200 Subject: [PATCH 1/2] feat: implement isSI getter for energy density and volumetric flow rate --- lib/src/units/energy_density/energy_density_unit.dart | 4 ++++ .../units/volumetric_flow_rate/volumetric_flow_rate_unit.dart | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lib/src/units/energy_density/energy_density_unit.dart b/lib/src/units/energy_density/energy_density_unit.dart index 38dfb4d..49d1932 100644 --- a/lib/src/units/energy_density/energy_density_unit.dart +++ b/lib/src/units/energy_density/energy_density_unit.dart @@ -58,6 +58,10 @@ enum EnergyDensityUnit implements LinearUnit { @override final String symbol; + /// Returns `true` only for [joulePerCubicMeter], the SI derived unit of energy density. + @override + bool get isSI => this == EnergyDensityUnit.joulePerCubicMeter; + // --- Pre-calculated direct conversion factors --- final double _factorToJoulePerCubicMeter; final double _factorToJoulePerLiter; diff --git a/lib/src/units/volumetric_flow_rate/volumetric_flow_rate_unit.dart b/lib/src/units/volumetric_flow_rate/volumetric_flow_rate_unit.dart index 58d5c83..41322bf 100644 --- a/lib/src/units/volumetric_flow_rate/volumetric_flow_rate_unit.dart +++ b/lib/src/units/volumetric_flow_rate/volumetric_flow_rate_unit.dart @@ -70,6 +70,10 @@ enum VolumetricFlowRateUnit implements LinearUnit { @override final String symbol; + /// Returns `true` only for [cubicMeterPerSecond], the SI derived unit of volumetric flow rate. + @override + bool get isSI => this == VolumetricFlowRateUnit.cubicMeterPerSecond; + // --- Pre-calculated direct conversion factors from this unit to all others --- final double _factorToCubicMeterPerSecond; final double _factorToCubicMeterPerMinute; From 0767639abada2ccc22c478dd807d11b657d6fed7 Mon Sep 17 00:00:00 2001 From: Tim Alenus Date: Tue, 28 Jul 2026 12:48:29 +0200 Subject: [PATCH 2/2] feat: implement isMetric for volumetric flow rate and energy density --- .../units/energy_density/energy_density_unit.dart | 5 +++++ .../volumetric_flow_rate_unit.dart | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/lib/src/units/energy_density/energy_density_unit.dart b/lib/src/units/energy_density/energy_density_unit.dart index 49d1932..5ff528d 100644 --- a/lib/src/units/energy_density/energy_density_unit.dart +++ b/lib/src/units/energy_density/energy_density_unit.dart @@ -62,6 +62,11 @@ enum EnergyDensityUnit implements LinearUnit { @override bool get isSI => this == EnergyDensityUnit.joulePerCubicMeter; + /// Returns `true` for all units, since every `EnergyDensityUnit` member is + /// a decimal metric unit. + @override + bool get isMetric => true; + // --- Pre-calculated direct conversion factors --- final double _factorToJoulePerCubicMeter; final double _factorToJoulePerLiter; diff --git a/lib/src/units/volumetric_flow_rate/volumetric_flow_rate_unit.dart b/lib/src/units/volumetric_flow_rate/volumetric_flow_rate_unit.dart index 41322bf..7fdd314 100644 --- a/lib/src/units/volumetric_flow_rate/volumetric_flow_rate_unit.dart +++ b/lib/src/units/volumetric_flow_rate/volumetric_flow_rate_unit.dart @@ -74,6 +74,18 @@ enum VolumetricFlowRateUnit implements LinearUnit { @override bool get isSI => this == VolumetricFlowRateUnit.cubicMeterPerSecond; + /// Returns `false` for the imperial/US customary [cubicFootPerSecond], + /// [cubicFootPerMinute], [gallonPerMinute], and [gallonPerHour]; `true` + /// for all decimal metric cubic-meter- and liter-based units. + @override + bool get isMetric => switch (this) { + VolumetricFlowRateUnit.cubicFootPerSecond || + VolumetricFlowRateUnit.cubicFootPerMinute || + VolumetricFlowRateUnit.gallonPerMinute || + VolumetricFlowRateUnit.gallonPerHour => false, + _ => true, + }; + // --- Pre-calculated direct conversion factors from this unit to all others --- final double _factorToCubicMeterPerSecond; final double _factorToCubicMeterPerMinute;