0

我目前正在开发一个计算用户 BMI 的 Flutter 应用程序,并且我正在尝试在水平滑块上显示该值。我目前正在使用 SyncFusion SfSlider,但它似乎与颤振滑块并没有太大不同。

我很难将值正确传递到滑块中并根据他们的 BMI 动态更改。

我可以将静态值传递给它,但不能传递来自 Firestore 的值。用户应该不能使用滑块更改值,但只能在使用 BMI 计算器时更改。我将附上数据库和相关代码的屏幕截图。

任何帮助深表感谢。

提前致谢。

数据库

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:health_app_fyp/model/user_data.dart';
import 'package:syncfusion_flutter_sliders/sliders.dart';

class ChartScreen extends StatefulWidget {
  const ChartScreen({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<ChartScreen> createState() => _ChartScreenState();
}

class _ChartScreenState extends State<ChartScreen> {
  var bmi = FirebaseFirestore.instance
      .collection('UserData')
      .doc(FirebaseAuth.instance.currentUser!.uid)
      .collection('bmi');
      
  @override
  Widget build(BuildContext context) => Scaffold(
      appBar: AppBar(
        title: Text('BMI'),
      ),
      body: Center(
          child: Padding(
        padding: const EdgeInsets.all(20),
        child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              Text(
                "Your BMI is below",
                style: const TextStyle(
                    fontSize: 20,
                    fontWeight: FontWeight.bold,
                    color: Colors.blue),
              ),
              FutureBuilder<DocumentSnapshot>(
                  future: FirebaseFirestore.instance
                      .collection('UserData')
                      .doc(FirebaseAuth.instance.currentUser!.uid)
                      .get(),
                  builder: (context, snapshot) {
                    if (snapshot.connectionState == ConnectionState.waiting) {
                      return const Text('Loading...');
                    }
                    return Text("BMI");
                  }),
              SizedBox(
                height: 10,
                child: Container(
                  child: SfSlider(
                    showLabels: true,
                    min: 10,
                    max: 40,
                    interval: 5,
                    value: 22,
                    showTicks: true,
                    onChanged: null,
                  ),
                ),
              ),
            ]),
      )));
}
4

0 回答 0