import 'package:aitrainer_app/util/trans.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

// ignore: must_be_immutable
class NumberPickerWidget extends StatefulWidget {
  final Function(double) onChange;
  final int minValue;
  final int maxValue;
  final int initalValue;
  final String unit;
  final Color color;
  double? fontSize;

  NumberPickerWidget(
      {Key? key,
      required this.minValue,
      required this.maxValue,
      required this.initalValue,
      required this.unit,
      this.fontSize,
      required this.color,
      required this.onChange})
      : super(key: key) {
    fontSize = fontSize ?? 20;
  }
  @override
  _NumberPickerWidgetState createState() => _NumberPickerWidgetState();
}

class _NumberPickerWidgetState extends State<NumberPickerWidget> with Trans {
  late FixedExtentScrollController _scrollController;
  double value = 0;

  @override
  void initState() {
    super.initState();
    _scrollController = FixedExtentScrollController(initialItem: widget.initalValue);
    _scrollController.animateToItem(widget.initalValue, duration: Duration(milliseconds: 100), curve: Curves.easeIn);
  }

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

  @override
  void didUpdateWidget(NumberPickerWidget oldWidget) {
    //print("value $value initial ${widget.initalValue}");
    if (value == 0) {
      _scrollController.animateToItem(widget.initalValue, duration: Duration(milliseconds: 100), curve: Curves.easeIn);
    }
    super.didUpdateWidget(oldWidget);
  }

  Widget durationPicker({bool inSeconds = false, bool inHundredths = false}) {
    return CupertinoPicker(
      scrollController: _scrollController,
      useMagnifier: true,
      magnification: 1.2,
      diameterRatio: 0.85,
      backgroundColor: Colors.transparent,
      selectionOverlay: Container(),
      onSelectedItemChanged: (x) {
        currentData = x.toDouble();

        //print("sec" + seconds.toStringAsFixed(2));
        setState(() {
          value = x.toDouble();
        });
        widget.onChange(value);
      },
      children: List.generate(
          widget.maxValue, (index) => Text('$index ' + widget.unit, style: TextStyle(color: widget.color, fontSize: widget.fontSize))),
      itemExtent: 30,
    );
  }

  double currentData = 0;
  @override
  Widget build(BuildContext context) {
    setContext(context);
    value = 0;
    return Container(
      color: Colors.transparent,
      width: MediaQuery.of(context).size.width * .40,
      child: Column(
        mainAxisSize: MainAxisSize.min,
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Container(
            color: Colors.transparent,
            width: MediaQuery.of(context).size.width * .35,
            child: Center(
              child: Container(
                  color: Colors.transparent,
                  width: MediaQuery.of(context).size.width * 0.95,
                  //height: MediaQuery.of(context).size.height * 0.25,
                  height: 100,
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      Expanded(child: durationPicker()),
                    ],
                  )),
            ),
          ),
        ],
      ),
    );
  }
}