Dart PackageのHealthがメジャーバージョンアップしてHealthDataPoint.valueの扱いが変わった

4.0.0がリリース

final healthData = await healthFactory.getHealthDataFromTypes(/*省略*/)
final num healthData[0].value; // 型エラー

取得内容が歩数のみの場合、以前はvalueでnum値が取れていたが、HealthValueという独自の型が導入された。
num値を取得したい場合は以下のようにしないといけない。

final healthData = await healthFactory.getHealthDataFromTypes(/*省略*/)
final num healthData[0].(value as NumericHealthValue).numericValue;

valueの型は NumericHealthValue, AudiogramHealthValue, WorkoutHealthValue がある。
それぞれ変換用のutilでも用意しとくのが良さそう。

取得したHealthデータをまとめてJSON化する処理を導入したための変更のようで、freezedとか使ってJSONからのデシリアライズ機構を持つModelを使っている人はコードが簡略化されると思われる。

例えば、

final health = Health.fromJson(healthData[0].toJson());