2

我想在底部工作表对话框中使用颤振数字选择器。但是当我通过滑动更改值时,数字选择器不会更新。我的代码如下。

GestureDetector(
                      onTap: (){
                        showModalBottomSheet<int>(
                            context: context,
                            builder: (BuildContext context){
                              return new Container(
                                height: 350.0,
                                color: HexColor('FF737373'),
                                child: new Container(
                                    decoration: new BoxDecoration(
                                        color: Colors.white,
                                        borderRadius: new BorderRadius.only(
                                            topLeft: const Radius.circular(20.0),
                                            topRight: const Radius.circular(20.0))),
                                    child: new Center(
                                      child: Column(
                                        mainAxisAlignment: MainAxisAlignment.center,
                                        children: <Widget>[
                                          NumberPicker.integer(
                                              initialValue: _currentValue,
                                              minValue: 0,
                                              maxValue: 1000,
                                          ),
                                        ],
                                      ),
                                    )),
                              );
                            }
                        ).then((int value) {
                          if (value != null) {
                            setState(() => _currentValue = value);
                          }
                        });
                      },

                      child: Container(
                        //container
                      ),
                    ),
4

1 回答 1

2

我不明白你的目标是什么,但我希望这会有所帮助:

showModalBottomSheet<int>(
  context: context,
  builder: (BuildContext context){
    return StatefulBuilder(
      builder: (BuildContext context, StateSetter setModalState) {
        return Container(
          height: 350.0,
          child: Container(
            decoration: BoxDecoration(
              color: Colors.white,
              borderRadius: BorderRadius.only(
                topLeft: const Radius.circular(20.0),
                topRight: const Radius.circular(20.0)
              )
            ),
            child: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  NumberPicker.integer(
                    initialValue: _currentValue,
                    minValue: 0,
                    maxValue: 1000,
                    onChanged: (value) {
                      setModalState(() {
                        _currentValue = value;
                      });
                    } 
                  ),
                ],
              ),
            )
          ),
        );
      }
    );
  }
).then((int value) {
  if(value != null) {
    setState(() => _currentValue = value);
  }
});
于 2020-12-04T02:57:42.793 回答