Skip to content

本次行程峰值 ​

进阶 · 完整可运行示例

使用单次行程存储维护峰值,并用固定 SI 单位存储以适应显示单位切换。

iOS 原生截图
本次行程峰值的 iOS 原生截图本次行程峰值的 iOS 原生截图,深色模式

完整源码 ​

下载可导入 ZIP · 下载 JSX 源码

复制代码到新建仪表,或在 App 内导入 ZIP。

jsx
function main() {
  const r=$data.current;
  const previous=$sessionStorage.get('peakSpeedMPS');
  const peak=r.speedMPS===null?previous:Math.max(previous??0,r.speedMPS);
  if(peak!==null) $sessionStorage.set('peakSpeedMPS',peak);
  const shown=peak===null?null:peak*(r.speedUnit==='mph'?2.2369362921:3.6);
  return <CardContent title="本次峰值" trailing={r.speedUnit}>
    <VStack spacing={8}>
      <Text fontSize={58} color={$env.foreground} contentAnimation={{type:'numericText'}}>
        {shown===null?'—':Math.round(shown)}
      </Text>
      <Text fontSize={11} color={$env.accent}>随本次记录结束清空</Text>
    </VStack>
  </CardContent>;
}

可以先改这些地方 ​

位置作用修改建议
peakSpeedMPS存储键改名会开始使用另一项数据
Math.round显示精度可改为 toFixed(1)

在 App 中检查 ​

  1. 本次记录内减速不应降低峰值。
  2. 下一次记录不应沿用上一次峰值。
  3. 切换单位后峰值应正确换算。

这个示例的边界

峰值只包含该卡片在存储有效期间处理到的读数。刚添加这张卡片不能恢复之前未记录进存储的整段行程峰值。

相关参考 ​

单次行程存储