Flutter身体质量指数计算插件bmi_calculator的使用

Flutter身体质量指数计算插件bmi_calculator的使用

简介

BMI 插件提供了一种根据年龄、性别、体重和身高来计算身体质量指数(BMI)的方法。解释结果基于世界卫生组织(WHO)的指南。

属性

  • height: 个体的身高(以米为单位)。
  • weight: 个体的体重(以千克为单位)。
  • ageYears: 个体的年龄(以年为单位)。
  • ageMonths: 个体额外的年龄(以月为单位)。
  • gender: 个体的性别。接受值 “male” 或 “female”。

方法

computeBMI()

  • 使用公式计算身体质量指数(BMI):
    • BMI = kg / m²
  • 返回计算出的 BMI 值(类型为 double)。

interpretBMI()

  • 解释 BMI 值:
    • 对于年龄范围在 5-19 岁之外的个体,使用一般 BMI 类别。
    • 对于年龄在 5-19 岁之间的儿童和青少年,使用基于年龄的 BMI 百分位数据,并考虑个体的性别。
  • 返回 BMI 的字符串解释。

解释指南

成人(年龄范围在 5-19 岁之外)

  • 严重消瘦:BMI < 16
  • 消瘦:16 ≤ BMI < 16.9
  • 轻度消瘦:16.9 ≤ BMI < 18.4
  • 正常体重:18.4 ≤ BMI < 24.9
  • 超重:24.9 ≤ BMI < 29.9
  • 肥胖 I 类(中度):29.9 ≤ BMI < 34.9
  • 肥胖 II 类(重度):34.9 ≤ BMI < 39.9
  • 肥胖 III 类(非常严重或病态肥胖):BMI ≥ 40

儿童和青少年(年龄范围在 5-19 岁)

  • 严重消瘦:BMI 小于第 -3 百分位
  • 消瘦:BMI 在第 -3 和 -2 百分位之间
  • 正常体重:BMI 在第 -2 和 0 百分位之间
  • 可能超重的风险:BMI 在第 0 和 1 百分位之间
  • 超重:BMI 在第 1 和 2 百分位之间
  • 肥胖:BMI 大于第 2 百分位

注意:对于年龄特定的解释,使用了来自 WHO 的百分位数据。确保此数据集的准确性对于准确的解释至关重要。

示例代码

以下是一个完整的示例,展示了如何使用 bmi_calculator 插件来计算和解释 BMI:

import 'package:flutter/material.dart';
import 'package:bmi_calculator/bmi_calculator.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('BMI 计算器')),
        body: BMICalculatorScreen(),
      ),
    );
  }
}

class BMICalculatorScreen extends StatefulWidget {
  [@override](/user/override)
  _BMICalculatorScreenState createState() => _BMICalculatorScreenState();
}

class _BMICalculatorScreenState extends State<BMICalculatorScreen> {
  final TextEditingController _heightController = TextEditingController();
  final TextEditingController _weightController = TextEditingController();
  final TextEditingController _ageYearsController = TextEditingController();
  final TextEditingController _ageMonthsController = TextEditingController();
  String _gender = 'male'; // 默认性别为男性
  String _result = '';

  void calculateBMI() {
    final double height = double.tryParse(_heightController.text) ?? 0;
    final double weight = double.tryParse(_weightController.text) ?? 0;
    final int ageYears = int.tryParse(_ageYearsController.text) ?? 0;
    final int ageMonths = int.tryParse(_ageMonthsController.text) ?? 0;

    final BMI bmi = BMI(
      height: height,
      weight: weight,
      ageYears: ageYears,
      ageMonths: ageMonths,
      gender: _gender,
    );

    final double bmiValue = bmi.computeBMI();
    final String bmiInterpretation = bmi.interpretBMI();

    setState(() {
      _result = '您的 BMI 是 $bmiValue\n$bmiInterpretation';
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: Column(
        children: [
          TextField(
            controller: _heightController,
            keyboardType: TextInputType.number,
            decoration: InputDecoration(labelText: '身高(米)'),
          ),
          TextField(
            controller: _weightController,
            keyboardType: TextInputType.number,
            decoration: InputDecoration(labelText: '体重(千克)'),
          ),
          TextField(
            controller: _ageYearsController,
            keyboardType: TextInputType.number,
            decoration: InputDecoration(labelText: '年龄(岁)'),
          ),
          TextField(
            controller: _ageMonthsController,
            keyboardType: TextInputType.number,
            decoration: InputDecoration(labelText: '额外年龄(月)'),
          ),
          DropdownButton<String>(
            value: _gender,
            onChanged: (String? newValue) {
              if (newValue != null) {
                setState(() {
                  _gender = newValue;
                });
              }
            },
            items: ['male', 'female'].map<DropdownMenuItem<String>>((String value) {
              return DropdownMenuItem<String>(
                value: value,
                child: Text(value),
              );
            }).toList(),
            decoration: InputDecoration(labelText: '性别'),
          ),
          SizedBox(height: 20),
          ElevatedButton(
            onPressed: calculateBMI,
            child: Text('计算 BMI'),
          ),
          SizedBox(height: 20),
          Text(_result),
        ],
      ),
    );
  }
}

更多关于Flutter身体质量指数计算插件bmi_calculator的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter身体质量指数计算插件bmi_calculator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,你可以创建一个简单的身体质量指数(BMI)计算器应用程序,并使用一个名为 bmi_calculator 的插件来计算 BMI 值。以下是如何使用 bmi_calculator 插件的基本步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 bmi_calculator 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  bmi_calculator: ^1.0.0  # 请确保使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 bmi_calculator 包:

import 'package:bmi_calculator/bmi_calculator.dart';

3. 计算 BMI

接下来,你可以使用 BMICalculator 类来计算 BMI。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:bmi_calculator/bmi_calculator.dart';

class BMICalculatorPage extends StatefulWidget {
  @override
  _BMICalculatorPageState createState() => _BMICalculatorPageState();
}

class _BMICalculatorPageState extends State<BMICalculatorPage> {
  final _heightController = TextEditingController();
  final _weightController = TextEditingController();
  String _bmiResult = '';

  void _calculateBMI() {
    double height = double.parse(_heightController.text);
    double weight = double.parse(_weightController.text);

    BMICalculator bmiCalculator = BMICalculator(height: height, weight: weight);
    double bmi = bmiCalculator.calculateBMI();

    setState(() {
      _bmiResult = '你的 BMI 是: ${bmi.toStringAsFixed(2)}';
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('BMI 计算器'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              controller: _heightController,
              decoration: InputDecoration(labelText: '身高 (厘米)'),
              keyboardType: TextInputType.number,
            ),
            TextField(
              controller: _weightController,
              decoration: InputDecoration(labelText: '体重 (公斤)'),
              keyboardType: TextInputType.number,
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _calculateBMI,
              child: Text('计算 BMI'),
            ),
            SizedBox(height: 20),
            Text(
              _bmiResult,
              style: TextStyle(fontSize: 20),
            ),
          ],
        ),
      ),
    );
  }
}

4. 运行应用程序

在你的 main.dart 文件中,将 BMICalculatorPage 设置为初始页面:

import 'package:flutter/material.dart';
import 'bmi_calculator_page.dart'; // 假设你的BMICalculatorPage文件名为bmi_calculator_page.dart

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'BMI 计算器',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: BMICalculatorPage(),
    );
  }
}

5. 测试应用程序

现在你可以运行你的 Flutter 应用程序,并测试 BMI 计算功能。输入身高和体重后,点击“计算 BMI”按钮,应用程序将显示计算出的 BMI 值。

6. 可选的 BMI 分类

你也可以根据 BMI 值来分类健康状况。bmi_calculator 插件可能已经提供了分类功能,或者你也可以手动实现。例如:

String getBMICategory(double bmi) {
  if (bmi < 18.5) {
    return '体重过轻';
  } else if (bmi >= 18.5 && bmi < 24.9) {
    return '正常体重';
  } else if (bmi >= 25 && bmi < 29.9) {
    return '超重';
  } else {
    return '肥胖';
  }
}
回到顶部