fooder-app/lib/widgets/macro.dart

125 lines
2.3 KiB
Dart
Raw Normal View History

import 'package:flutter/material.dart';
class MacroWidget extends StatelessWidget {
final double? amount;
final double? calories;
2023-07-30 20:44:50 +02:00
final double? fiber;
final double protein;
final double carb;
final double fat;
final TextStyle style;
2023-07-30 14:40:45 +02:00
final Widget? child;
const MacroWidget({
Key? key,
this.calories,
this.amount,
2023-07-30 14:40:45 +02:00
this.child,
2023-07-30 20:44:50 +02:00
this.fiber,
required this.protein,
required this.carb,
required this.fat,
required this.style,
}) : super(key: key);
@override
Widget build(BuildContext context) {
var elements = <Widget>[
Expanded(
flex: 1,
child: Text(
2023-07-30 13:21:45 +02:00
"C: ${carb.toStringAsFixed(1)}g",
style: style,
textAlign: TextAlign.center,
),
),
Expanded(
flex: 1,
child: Text(
2023-07-30 13:21:45 +02:00
"F: ${fat.toStringAsFixed(1)}g",
style: style,
textAlign: TextAlign.center,
),
),
Expanded(
flex: 1,
child: Text(
2023-07-30 13:21:45 +02:00
"P: ${protein.toStringAsFixed(1)}g",
style: style,
textAlign: TextAlign.center,
),
),
];
2023-07-30 20:44:50 +02:00
if (fiber != null) {
elements.add(
Expanded(
flex: 1,
child: Text(
"f: ${fiber!.toStringAsFixed(1)}g",
style: style,
textAlign: TextAlign.center,
),
),
);
}
if (calories != null) {
elements.add(
Expanded(
flex: 1,
child: Text(
"${calories!.toStringAsFixed(1)} kcal",
style: style,
textAlign: TextAlign.center,
),
2023-07-30 20:44:50 +02:00
),
);
}
if (amount != null) {
elements.add(
Expanded(
flex: 1,
child: Text(
2023-07-30 13:21:45 +02:00
"${amount!.toStringAsFixed(1)}g",
style: style,
textAlign: TextAlign.center,
),
2023-07-30 20:44:50 +02:00
),
);
}
2023-07-30 14:40:45 +02:00
if (child != null) {
elements.add(
Expanded(
flex: 1,
child: child!,
2023-07-30 20:44:50 +02:00
),
);
2023-07-30 14:40:45 +02:00
}
2023-07-30 20:44:50 +02:00
if (elements.length < 4) {
elements.add(
2023-07-30 20:44:50 +02:00
const Expanded(
flex: 1,
2023-07-30 20:44:50 +02:00
child: Text(""),
),
);
}
return Padding(
padding: const EdgeInsets.only(
top: 4.0,
bottom: 4.0,
left: 8.0,
right: 8.0,
),
child: Row(
children: elements,
),
);
}
}