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());