Fix handling of kcal amount extraction from json
This commit is contained in:
parent
766a3ca6b0
commit
d4abba2df2
@ -170,14 +170,10 @@ class FoodEntryBloc extends Bloc<FoodEvent, GlobalEntryState> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int kcalToDisplay = response.food?.kcalPer100g ?? 0;
|
|
||||||
if (response.food?.kcalPer100gPrepared != 0) {
|
|
||||||
kcalToDisplay = response.food?.kcalPer100gPrepared ?? 0;
|
|
||||||
}
|
|
||||||
var newEntryFinishedWaiting = FoodEntryState(
|
var newEntryFinishedWaiting = FoodEntryState(
|
||||||
name: response.food?.name ?? "",
|
name: response.food?.name ?? "",
|
||||||
mass: response.food?.mass ?? 0,
|
mass: response.food?.mass ?? 0,
|
||||||
kcalPer100: kcalToDisplay,
|
kcalPer100: response.food?.kcalPer100g ?? 0,
|
||||||
waitingForNetwork: false,
|
waitingForNetwork: false,
|
||||||
isSelected: false,
|
isSelected: false,
|
||||||
);
|
);
|
||||||
|
@ -47,35 +47,50 @@ class FoodFactLookupClient {
|
|||||||
class FoodFactModel {
|
class FoodFactModel {
|
||||||
final String name;
|
final String name;
|
||||||
final int kcalPer100g;
|
final int kcalPer100g;
|
||||||
final int kcalPer100gPrepared;
|
|
||||||
final int mass;
|
final int mass;
|
||||||
|
|
||||||
FoodFactModel({
|
FoodFactModel({
|
||||||
required this.name,
|
required this.name,
|
||||||
required this.mass,
|
required this.mass,
|
||||||
required this.kcalPer100g,
|
required this.kcalPer100g,
|
||||||
required this.kcalPer100gPrepared,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
factory FoodFactModel.fromJson(Map<String, dynamic> json) {
|
factory FoodFactModel.fromJson(Map<String, dynamic> json) {
|
||||||
int kcalPer100g = json['product']['nutriments']['energy-kcal_100g'] ?? 0;
|
int kcalPer100gForModel = 0;
|
||||||
int kcalPer100gPrepared =
|
int kcalPer100g = 0;
|
||||||
json['product']['nutriments']['energy-kcal_prepared_100g'] ?? 0;
|
int kcalPer100gPrepared = 0;
|
||||||
|
|
||||||
String quantityString = json['product']['product_quantity'] ?? "0";
|
|
||||||
int quantity;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
quantity = int.parse(quantityString);
|
kcalPer100g = (json['product']['nutriments']['energy-kcal_100g'] as num)
|
||||||
|
.toDouble()
|
||||||
|
.ceil();
|
||||||
|
kcalPer100gForModel = kcalPer100g;
|
||||||
|
} catch (e) {
|
||||||
|
try {
|
||||||
|
kcalPer100gPrepared =
|
||||||
|
(json['product']['nutriments']['energy-kcal_prepared_100g'] as num)
|
||||||
|
.toDouble()
|
||||||
|
.ceil();
|
||||||
|
kcalPer100gForModel = kcalPer100gPrepared;
|
||||||
|
} catch (e) {
|
||||||
|
kcalPer100gForModel = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String quantityString = json['product']['product_quantity'] ?? "0";
|
||||||
|
double quantity;
|
||||||
|
|
||||||
|
try {
|
||||||
|
quantity = double.parse(quantityString);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
quantity = 0;
|
quantity = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FoodFactModel(
|
return FoodFactModel(
|
||||||
name: json['product']['product_name'] ?? "",
|
name: json['product']['product_name'] ?? "",
|
||||||
kcalPer100g: kcalPer100g,
|
kcalPer100g: kcalPer100gForModel,
|
||||||
kcalPer100gPrepared: kcalPer100gPrepared,
|
mass: quantity.ceil(),
|
||||||
mass: quantity);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user