我目前正在开发一个计算用户 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,
),
),
),
]),
)));
}