【问题标题】:Values in RangeSlider inside AlertDialog not updatingAlertDialog 内 RangeSlider 中的值未更新
【发布时间】:2022-07-19 05:08:54
【问题描述】:

我不明白为什么我的范围滑块在拖动时不更新值。我应该使用 onChanged 函数更新状态,但似乎没有任何效果。它仅在我按下“应用”按钮并再次重新打开我的 alertDialog 时才有效,在那里我看到滑块的值已更新。所有这些都被包裹在一个 statefulWidget 和 Appbar 中。当我按下过滤器按钮时,会出现一个带有过滤器的弹出窗口。

onPressed: () {
              showDialog(
                  context: context,
                  builder: (BuildContext context) {
                    return AlertDialog(
                      title: const Text('Filter'),
                      content: SizedBox(
                        child: Card(
                          child: Column(
                            children: [
                              Text('Age'),
                              RangeSlider(
                                values: _rangeValues,
                                divisions: 20,
                                labels: RangeLabels(
                                    _rangeValues.start.round().toString(),
                                    _rangeValues.end.round().toString()),
                                onChanged: (  value ) {
                                  _rangeValues = value ;
                                  setState(() {
                                    isFiltering = false;
                                    
                                    varSelectedFilterAgeStart = value.start;
                                    varSelectedFilterAgeEnd = value.end;
                                  });
                                },
                                min: 0.0,
                                max: 20.0,
                              ),
                            ],
                          ),
                        ),
                      ),
                      actions: [
                        ElevatedButton(
                          child: const Text('Apply'),
                          onPressed: () {
                            
                            setState(() {
                              isFiltering = true;
                              varSelectedFilterAge = varSelectedFilterAgeStart;
                            });
                            Navigator.of(context).pop(varSelectedFilterAge);
                          },
                        ),
                        ElevatedButton(
                          child: const Text('Cancel'),
                          onPressed: () {
                            Navigator.of(context).pop();
                          },
                        ),
                      ],
                    );
                  });

我做错了什么??

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    StatefulBuilder 包裹你的AlertDialog 并使用它的setState。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 2021-10-20
      相关资源
      最近更新 更多