Flutter身体质量指数(BMI)计算插件maquestiaux_bmi_calculator的使用

Flutter身体质量指数(BMI)计算插件maquestiaux_bmi_calculator的使用

使用说明

以下是一个完整的示例,展示如何在Flutter应用中使用maquestiaux_bmi_calculator插件来计算身体质量指数(BMI)。

完整示例代码

// 导入必要的包
import 'package:flutter/material.dart';
import './bmi_calculation_page.dart'; // 引入BMI计算页面

// 主应用入口
void main() {
  runApp(MyApp()); // 运行MyApp
}

// 定义MyApp类
class MyApp extends StatelessWidget {
  // 构建应用界面
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter BMI Demo', // 应用标题
      debugShowCheckedModeBanner: false, // 禁用调试标志
      theme: ThemeData( 
        primarySwatch: Colors.indigo, // 设置主题颜色
        // 自适应平台密度
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: BmiCalculationPage(), // 设置首页为BMI计算页面
    );
  }
}

BMI计算页面示例代码

// 导入必要的包
import 'package:flutter/material.dart';
import 'package:maquestiaux_bmi_calculator/maquestiaux_bmi_calculator.dart'; // 引入BMI计算库

// 定义BMI计算页面
class BmiCalculationPage extends StatefulWidget {
  @override
  _BmiCalculationPageState createState() => _BmiCalculationPageState();
}

class _BmiCalculationPageState extends State<BmiCalculationPage> {
  double height = 0; // 用户身高
  double weight = 0; // 用户体重
  String bmiResult = ''; // BMI结果
  String advice = ''; // 建议

  // 计算BMI的方法
  void calculateBMI() {
    final bmiCalculator = BmiCalculator(height: height, weight: weight);
    final result = bmiCalculator.calculate();

    setState(() {
      bmiResult = '您的BMI值为: ${result.bmi.toStringAsFixed(2)}'; // 格式化BMI值到两位小数
      advice = result.advice; // 获取建议
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('BMI计算器'), // 设置AppBar标题
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            TextField(
              decoration: InputDecoration(labelText: '请输入身高(cm)'), // 输入框提示
              onChanged: (value) {
                height = double.tryParse(value) ?? 0; // 转换输入为double类型
              },
            ),
            SizedBox(height: 16), // 添加间距
            TextField(
              decoration: InputDecoration(labelText: '请输入体重(kg)'), // 输入框提示
              onChanged: (value) {
                weight = double.tryParse(value) ?? 0; // 转换输入为double类型
              },
            ),
            SizedBox(height: 16), // 添加间距
            ElevatedButton(
              onPressed: calculateBMI, // 按钮点击事件
              child: Text('计算BMI'), // 按钮文本
            ),
            SizedBox(height: 16), // 添加间距
            Text(bmiResult), // 显示BMI结果
            SizedBox(height: 8), // 添加间距
            Text(advice), // 显示建议
          ],
        ),
      ),
    );
  }
}

效果图

BMI Calculator

说明

  1. 依赖引入: 在pubspec.yaml文件中添加以下依赖:
    dependencies:
      maquestiaux_bmi_calculator: ^1.0.0
    

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

1 回复

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


maquestiaux_bmi_calculator 是一个用于计算身体质量指数 (BMI) 的 Flutter 插件。它可以帮助你根据用户的身高和体重快速计算出 BMI 值,并根据结果提供相应的健康建议。

安装插件

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

dependencies:
  flutter:
    sdk: flutter
  maquestiaux_bmi_calculator: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装插件。

使用插件

在你的 Dart 文件中导入插件:

import 'package:maquestiaux_bmi_calculator/maquestiaux_bmi_calculator.dart';

接下来,你可以使用 BMICalculator 类来计算 BMI 值并获取健康建议。

示例代码

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'BMI Calculator',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: BMICalculatorScreen(),
    );
  }
}

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

class _BMICalculatorScreenState extends State<BMICalculatorScreen> {
  final _heightController = TextEditingController();
  final _weightController = TextEditingController();
  String _bmiResult = '';
  String _bmiStatus = '';

  void _calculateBMI() {
    double height = double.tryParse(_heightController.text) ?? 0.0;
    double weight = double.tryParse(_weightController.text) ?? 0.0;

    if (height > 0 && weight > 0) {
      double bmi = BMICalculator.calculateBMI(height: height, weight: weight);
      String status = BMICalculator.getBMIStatus(bmi);

      setState(() {
        _bmiResult = bmi.toStringAsFixed(2);
        _bmiStatus = status;
      });
    } else {
      setState(() {
        _bmiResult = 'Invalid input';
        _bmiStatus = '';
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('BMI Calculator'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              controller: _heightController,
              decoration: InputDecoration(labelText: 'Height (cm)'),
              keyboardType: TextInputType.number,
            ),
            TextField(
              controller: _weightController,
              decoration: InputDecoration(labelText: 'Weight (kg)'),
              keyboardType: TextInputType.number,
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _calculateBMI,
              child: Text('Calculate BMI'),
            ),
            SizedBox(height: 20),
            Text('BMI: $_bmiResult', style: TextStyle(fontSize: 24)),
            Text('Status: $_bmiStatus', style: TextStyle(fontSize: 24)),
          ],
        ),
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    _heightController.dispose();
    _weightController.dispose();
    super.dispose();
  }
}
回到顶部