从 Flutter 中的另一个类访问已更改的 Slider 值

问题描述

我有一个类,里面有一个slider.adaptive 和它的整个布局。在我的主类中,我调用该滑块类并声明布局(标题等)的值。我遇到的问题是无法访问滑块本身的值并将其保存在调用滑块类的类中。 我仍然是 Flutter 的初学者,所以我会喜欢尽可能简单的解释,这样我就可以理解它们。

我到目前为止的代码

class CustomSlider extends StatefulWidget {
  final double value;
  final String title;
  final String good;
  final String bad;

  CustomSlider({
    required this.value,required this.title,required this.good,required this.bad,});

  @override
  _CustomSlider createState() {
    return _CustomSlider(value: value,title: title,good: good,bad: bad);
  }
}

class _CustomSlider extends State<CustomSlider> {
  double value;
  String title = "";
  double height = 15.0;
  double width = 10.0;
  String good;
  String bad;

  _CustomSlider({
    required this.value,});

  //double value = 0.0;
  @override
  Widget build(BuildContext context) {
    return Container(

//more layout here in-between

                   Expanded(
                      child: Slider.adaptive(
                        value: value,min: 0,max: 10,divisions: 10,activeColor: Colors.cyanAccent,onChanged: (double changedValue) {
                          setState((){
                              value = changedValue;
                          });
                          print(value);
                        },// semanticFormatterCallback: (double endValue){
                        //   return '$value';
                        // },label: value.toString(),),

调用 Customslider 的类:

class RecordSymptoms extends StatefulWidget {
  @override
  State createState() => new _RecordSymptoms();
}

class _RecordSymptoms extends State<RecordSymptoms> {
  final double height = 20;
  double symptomTotal = 0;
  var generalWellbeing1;
  double generalWellbeing = 0;
  double cramps = 0;
  double flatulence = 0;
  double bowel = 0;

  @override
  Widget build(BuildContext context) => Scaffold(
        backgroundColor: Colors.teal[100],endDrawer: menu(),appBar: AppBar(
          title: Text(
            'Symptome erfassen',style: TextStyle(
              color: Colors.black,backgroundColor: Colors.cyanAccent,body: Stack(
          children: <Widget>[
            Positioned.fill(
              child: Image(
                image: Assetimage('assets/Inner_Peace.png'),fit: BoxFit.fill,Column(
              children: <Widget>[
                CustomSlider(
                    value: generalWellbeing,title: 'Allgemeines Wohlbefinden',good: "Gut",bad: "Schlecht"),CustomSlider(
                    value: cramps,title: 'Krämpfe',good: "Keine",bad: "Extrem"),CustomSlider(
                    value: flatulence,title: 'Blähungen',CustomSlider(
                    value: bowel,title: 'Stuhlgang',good: "Fest",bad: "Flüssig"),Spacer(),Container(
                  child: Row(
                    children: <Widget>[
                      Flexible(
                        flex: 20,child: CustomButton(
                          text: 'Keine Symptome',onClick: () {
                            Navigator.of(context).push(
                              MaterialPageRoute(
                                builder: (context) => RecordedMeals(),);
                          },Flexible(
                        flex: 20,child: CustomButton(
                          text: 'Symptome speichern',onClick: () async {
                            Navigator.of(context).push(
                              MaterialPageRoute(
                                builder: (context) => RecordedMeals(),);
                            print(generalWellbeing);
                            print(bowel.toString());
                            print(cramps.toString());
                            print(flatulence.toString());
                          },],SizedBox(height: height),);

我尝试了 semanticFormatterCallback,但我不知道如何将其传递给其他班级。我也试过把类改成函数,但是后来出现了四个滑块的滑块一起移动的问题。

print(flatulence.toString()); 和其他的都打印出 0.0,这在我用 0 初始化后无法从其他类获取值时才有意义。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)