Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 动态更改滑块最大值并中止拖动_Flutter - Fatal编程技术网

Flutter 动态更改滑块最大值并中止拖动

Flutter 动态更改滑块最大值并中止拖动,flutter,Flutter,有一个滑块,通常用于1-500之间的值,但偶尔会更高,并喜欢动态调整最大值。所以如果你滑到490,那么最大值将从500=>1000,然后从1000=>1500等等 我遇到的问题是,当我更改最大值时,阻力不会停止,因此当更改最大值时,滑块将立即转到最大值,这将触发最大值增加,从而使滑块再次转到最大值,等等 达到最大值后,如何强制用户重新按下滑块 导入“包装:颤振/材料.省道”; 导入“package:flatter/rendering.dart”; void main()=>runApp(MyA

有一个滑块,通常用于1-500之间的值,但偶尔会更高,并喜欢动态调整最大值。所以如果你滑到490,那么最大值将从500=>1000,然后从1000=>1500等等

我遇到的问题是,当我更改最大值时,阻力不会停止,因此当更改最大值时,滑块将立即转到最大值,这将触发最大值增加,从而使滑块再次转到最大值,等等

达到最大值后,如何强制用户重新按下滑块

导入“包装:颤振/材料.省道”;
导入“package:flatter/rendering.dart”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
正文:MySlider(),
),
);
}
}
类MySlider扩展StatefulWidget{
MySlider({Key}):超级(Key:Key);
@凌驾
_MySliderState createState()=>\u MySliderState();
}
类_MySliderState扩展状态{
双倍最大值=500;
双值=100;
@凌驾
小部件构建(构建上下文){
如果(值>(最大值-10)){
最大+=500;
//我可以在这里中止滑块的拖动吗
//所以我必须重新按下滑块。
}
返回列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
滑块(
onChanged:(newValue)=>setState((){
值=新值;
}),
民:1,,
马克斯:马克斯,
价值:价值,
),
文本(value.toInt().toString()),
],
);
}
}
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: MySlider(),
      ),
    );
  }
}

class MySlider extends StatefulWidget {
  MySlider({Key key}) : super(key: key);

  @override
  _MySliderState createState() => _MySliderState();
}

class _MySliderState extends State<MySlider> {
  double max = 500;
  double value = 100;

  @override
  Widget build(BuildContext context) {
    if (value > (max - 10)) {
      max += 500;
      // Can I abort the draging of slider here
      // so I have to re-press the slider.
    }

    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Slider(
          onChanged: (newValue) => setState(() {
            value = newValue;
          }),
          min: 1,
          max: max,
          value: value,
        ),
        Text(value.toInt().toString()),
      ],
    );
  }
}