Button 颤振:是否有一个onhold选项而不是pressured one来重复设置状态

Button 颤振:是否有一个onhold选项而不是pressured one来重复设置状态,button,flutter,counter,setstate,flutter-onpressed,Button,Flutter,Counter,Setstate,Flutter Onpressed,我想要一个按钮,我可以按住它,然后设置状态重复,除非我停止按住它 我是一个初学者,正在开发我的第一个应用程序。我想计算体积。人们必须输入高度、宽度和部门。我不想输入文本(表单)字段,因为键盘是必需的。我找到了一个有两个按钮的解决方案,一个加一个减 我让它工作,但人们必须经常按下按钮来设置他们想要的高度值 我想,我用的不是压抑,而是等待,计数器正在快速增加。但我不知道解决办法 RawMaterialButton( child: Icon(MdiIcons.minus), onPressed: ()

我想要一个按钮,我可以按住它,然后设置状态重复,除非我停止按住它

我是一个初学者,正在开发我的第一个应用程序。我想计算体积。人们必须输入高度、宽度和部门。我不想输入文本(表单)字段,因为键盘是必需的。我找到了一个有两个按钮的解决方案,一个加一个减

我让它工作,但人们必须经常按下按钮来设置他们想要的高度值

我想,我用的不是压抑,而是等待,计数器正在快速增加。但我不知道解决办法

RawMaterialButton(
child: Icon(MdiIcons.minus),
onPressed: () {
setState(() {
width--;

好吧,我没修好。作为初学者,这对我来说太复杂了。 我找到了另一个解决办法。 我和三个孩子吵架了: 用于微调的减号按钮和加号按钮 大台阶的滑动条

这是我使用的代码,你有更好的解决方案吗,让我知道。我只是为像我这样的初学者准备的。 我要感谢特别的@Abbas.M,他试图帮助我

Row(
                  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: <Widget>[
                    AnimatedOpacity(
                      opacity: height == 1 ? 0.0 : 1.0,
                      duration: Duration(milliseconds: 500),
                      child: RawMaterialButton(
                        child: Icon(MdiIcons.minus),
                        onPressed: () {
                          setState(() {
                            height > 1 ? height-- : height = height;
                          });
                        },
                        constraints: BoxConstraints.tightFor(
                          width: 25.0,
                          height: 25.0,
                        ),
                        shape: CircleBorder(),
                        fillColor: white,
                      ),
                    ),
                    SliderTheme(
                      data: SliderTheme.of(context).copyWith(
                        inactiveTrackColor: cAppBottomBar,
                        activeTrackColor: white,
                        thumbColor: white,
                        overlayColor: cShadow,
                        thumbShape:
                            RoundSliderThumbShape(enabledThumbRadius: 10.0),
                        overlayShape:
                            RoundSliderOverlayShape(overlayRadius: 17.0),
                      ),
                      child: Slider(
                          value: height.toDouble(),
                          min: 1,
                          max: 300,
                          onChanged: (value) {
                            setState(() {
                              height = value.toInt();
                            });
                          }),
                    ),
                    AnimatedOpacity(
                      opacity: height == 300 ? 0.0 : 1.0,
                      duration: Duration(milliseconds: 500),
                      child: RawMaterialButton(
                        child: Icon(Icons.add),
                        onPressed: () {
                          setState(() {
                            height < 300 ? height++ : height = height;
                          });
                        },
                        constraints: BoxConstraints.tightFor(
                          width: 25.0,
                          height: 25.0,
                        ),
                        shape: CircleBorder(),
                        fillColor: white,
                      ),
                    ),
行(
mainAxisAlignment:mainAxisAlignment.space,
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
动产能力(
不透明度:高度==1?0.0:1.0,
持续时间:持续时间(毫秒:500),
子项:RawMaterialButton(
子:图标(MDICONS.减号),
已按下:(){
设置状态(){
高度>1?高度--:高度=高度;
});
},
约束:BoxConstraints.tightFor(
宽度:25.0,
身高:25.0,
),
形状:CircleBorder(),
填充颜色:白色,
),
),
幻灯片主题(
数据:SliderTheme.of(context).copyWith(
颜色:cAppBottomBar,
activeTrackColor:白色,
拇指颜色:白色,
覆盖颜色:cShadow,
拇指形状:
圆形滑块圆角形状(启用圆角半径:10.0),
覆盖形状:
圆形滑块过铺形状(覆盖半径:17.0),
),
子:滑块(
值:height.toDouble(),
民:1,,
最高:300,
一旦更改:(值){
设置状态(){
高度=value.toInt();
});
}),
),
动产能力(
不透明度:高度==300?0.0:1.0,
持续时间:持续时间(毫秒:500),
子项:RawMaterialButton(
子:图标(Icons.add),
已按下:(){
设置状态(){
高度<300?高度++:高度=高度;
});
},
约束:BoxConstraints.tightFor(
宽度:25.0,
身高:25.0,
),
形状:CircleBorder(),
填充颜色:白色,
),
),

好吧,我没有修好它。作为初学者,这对我来说太复杂了。 我找到了另一个解决办法。 我和三个孩子吵架了: 用于微调的减号按钮和加号按钮 大台阶的滑动条

这是我使用的代码,你有更好的解决方案吗,让我知道。我只是把它给其他像我一样的初学者。 我要感谢特别的@Abbas.M,他试图帮助我

Row(
                  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: <Widget>[
                    AnimatedOpacity(
                      opacity: height == 1 ? 0.0 : 1.0,
                      duration: Duration(milliseconds: 500),
                      child: RawMaterialButton(
                        child: Icon(MdiIcons.minus),
                        onPressed: () {
                          setState(() {
                            height > 1 ? height-- : height = height;
                          });
                        },
                        constraints: BoxConstraints.tightFor(
                          width: 25.0,
                          height: 25.0,
                        ),
                        shape: CircleBorder(),
                        fillColor: white,
                      ),
                    ),
                    SliderTheme(
                      data: SliderTheme.of(context).copyWith(
                        inactiveTrackColor: cAppBottomBar,
                        activeTrackColor: white,
                        thumbColor: white,
                        overlayColor: cShadow,
                        thumbShape:
                            RoundSliderThumbShape(enabledThumbRadius: 10.0),
                        overlayShape:
                            RoundSliderOverlayShape(overlayRadius: 17.0),
                      ),
                      child: Slider(
                          value: height.toDouble(),
                          min: 1,
                          max: 300,
                          onChanged: (value) {
                            setState(() {
                              height = value.toInt();
                            });
                          }),
                    ),
                    AnimatedOpacity(
                      opacity: height == 300 ? 0.0 : 1.0,
                      duration: Duration(milliseconds: 500),
                      child: RawMaterialButton(
                        child: Icon(Icons.add),
                        onPressed: () {
                          setState(() {
                            height < 300 ? height++ : height = height;
                          });
                        },
                        constraints: BoxConstraints.tightFor(
                          width: 25.0,
                          height: 25.0,
                        ),
                        shape: CircleBorder(),
                        fillColor: white,
                      ),
                    ),
行(
mainAxisAlignment:mainAxisAlignment.space,
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
动产能力(
不透明度:高度==1?0.0:1.0,
持续时间:持续时间(毫秒:500),
子项:RawMaterialButton(
子:图标(MDICONS.减号),
已按下:(){
设置状态(){
高度>1?高度--:高度=高度;
});
},
约束:BoxConstraints.tightFor(
宽度:25.0,
身高:25.0,
),
形状:CircleBorder(),
填充颜色:白色,
),
),
幻灯片主题(
数据:SliderTheme.of(context).copyWith(
颜色:cAppBottomBar,
activeTrackColor:白色,
拇指颜色:白色,
覆盖颜色:cShadow,
拇指形状:
圆形滑块圆角形状(启用圆角半径:10.0),
覆盖形状:
圆形滑块过铺形状(覆盖半径:17.0),
),
子:滑块(
值:height.toDouble(),
民:1,,
最高:300,
一旦更改:(值){
设置状态(){
高度=value.toInt();
});
}),
),
动画片