// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:ui';

import 'package:flutter/material.dart';

class SlidersPage extends StatefulWidget {
  const SlidersPage({super.key});

  @override
  State<SlidersPage> createState() => _SlidersPageState();
}

class _SlidersPageState extends State<SlidersPage> with TickerProviderStateMixin {
 late AnimationController _sliderController;
  late Animation<double> _sliderAnimation;
  double _sliderValue = 0.0;
  RangeValues _rangeSliderValues = const RangeValues(0.0, 1.0);

  @override
  void initState() {
    super.initState();
    _sliderController = AnimationController(
      duration: const Duration(seconds: 1),
      vsync: this,
    )..repeat();
    _sliderAnimation = Tween<double>(begin: 0, end: 1).animate(_sliderController)
      ..addListener(() {
        setState(() {
          _sliderValue = _sliderAnimation.value;
          _rangeSliderValues = RangeValues(
            clampDouble(_sliderAnimation.value, 0, 0.45),
            1.0 - clampDouble(_sliderAnimation.value, 0, 0.45),
          );
        });
      });
  }

  @override
  void dispose() {
    _sliderController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Material(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Slider(
            value: _sliderValue,
            onChanged: (double value) { },
          ),
          RangeSlider(
            values: _rangeSliderValues,
            onChanged: (RangeValues values) { },
          ),
        ],
      ),
    );
  }
}
