waist.dart 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. import 'package:vitalapp/architecture/utils/nums.dart';
  4. import 'package:vitalapp/components/dialog_number.dart';
  5. import 'package:vitalapp/pages/medical/widgets/exam_card.dart';
  6. import 'package:vitalapp/pages/medical/controllers/waist.dart';
  7. import 'side_bar.dart';
  8. class WaistView extends GetView<WaistDeviceController> {
  9. const WaistView({super.key});
  10. @override
  11. Widget build(BuildContext context) {
  12. final state = controller.state;
  13. return ExamCard(
  14. titleText: const SizedBox(),
  15. content: Column(
  16. mainAxisAlignment: MainAxisAlignment.start,
  17. children: [
  18. Obx(
  19. () => SideBar(
  20. title: '腰围',
  21. value: state.waistlineDisplay,
  22. unit: 'cm',
  23. onTap: _onWaistlineTap,
  24. ),
  25. ),
  26. const Divider(indent: 30),
  27. Obx(
  28. () => SideBar(
  29. title: '臀围',
  30. value: state.hiplineDisplay,
  31. unit: 'cm',
  32. onTap: _onHiplineTap,
  33. ),
  34. ),
  35. const Divider(indent: 30),
  36. Obx(
  37. () => SideBar(
  38. title: '腰臀比',
  39. value: state.whrDisplay,
  40. unit: '',
  41. ),
  42. ),
  43. ],
  44. ),
  45. );
  46. }
  47. Future<void> _onWaistlineTap() async {
  48. final state = controller.state;
  49. String? result = await VDialogNumber(
  50. title: '腰围',
  51. initialValue: NumUtils.displayDouble(state.waistline),
  52. ).show();
  53. final newValue = double.tryParse(result ?? "");
  54. controller.onWaistlineChanged(newValue);
  55. }
  56. Future<void> _onHiplineTap() async {
  57. final state = controller.state;
  58. String? result = await VDialogNumber(
  59. title: '臀围',
  60. initialValue: NumUtils.displayDouble(state.hipline),
  61. ).show();
  62. final newValue = double.tryParse(result ?? "");
  63. controller.onHiplineChanged(newValue);
  64. }
  65. }