首页 > 解决方案 > 检查 RangeSlider 中的哪个拇指(左或右)是滑动的

问题描述

我正在使用 RangeSlider。我需要根据(左或右拇指是幻灯片)更改文本的值。我可以根据 Thumb slide 获取 rangeValue 的值,但我想具体知道哪个拇指被滑动了。

               RangeSlider(
                      values: rangeValues,
                      min: 0.0,
                      max: 11,
                      divisions: 11,
                      onChanged: (value) {
                        setState(() {
                          rangeValues = value;
                          if(rangeValues.start>=0){
                            range="start";
                          }
                          else if (rangeValues.end>=0){
                            range = "end";
                          }
                        });
                      }) 

标签: fluttersliderrangeslider

解决方案


这对你有用:

在此处输入图像描述

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  final appTitle = 'RangeSlider Thumb Detection ';

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: appTitle,
      home: MyHomePage(title: appTitle),
    );
  }
}

class MyHomePage extends StatefulWidget {
  final String title;

  MyHomePage({Key key, this.title}) : super(key: key);

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

class _MyHomePageState extends State<MyHomePage>{

  RangeValues rangeValues = RangeValues(0.3, 0.7);

  String range = 'No meovement yet !';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(widget.title)),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: <Widget>[
          Text(range, style: TextStyle(fontSize: 22.0,),),
          RangeSlider(
              values: rangeValues,
              min: 0.0,
              max: 11,
              divisions: 11,
              onChanged: (value) {
                setState(() {
                  if(value.start != rangeValues.start){
                    range = 'Left thumb';
                  }
                  if(value.end != rangeValues.end){
                    range = 'Right thumb';
                  }
                  rangeValues = value;
                });
              }),
        ],
      ),
    );
  }
}

推荐阅读