replace 0.00 of user input and move one step backward in flutter

187 views Asked by At

sample layout input of textfield with initial value 0.00

image

In flutter when user input digit number, i want it to be like always replacing last digit of number and move one step backward


Example: default value is 0.00 with fixed 2 decimals place

User Input Output
3 0.03
5 0.35
1 3.51
0 35.10
1

There are 1 answers

0
Md. Yeasin Sheikh On

I am doing hard-coded, Play with this widget.

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

  @override
  State<MyStatelessWidget> createState() => _MyStatelessWidgetState();
}

class _MyStatelessWidgetState extends State<MyStatelessWidget> {
  String text = "0.00";
  late final TextEditingController controller;

  @override
  void initState() {
    super.initState();

    controller = TextEditingController()
      ..addListener(() {
        final data = controller.text;
        log(data);
        switch (data.length) {
          case 0:
            setState(() {
              text = "0.00";
            });
            return;
          case 1:
            setState(() {
              text = "0.0$data";
            });

            break;
          case 2:
            setState(() {
              text = "0.$data";
            });
            break;
          case 3:
            setState(() {
              text = data[0] + "." + data.substring(1);
            });
            break;
          default:
            setState(() {
              text = data.substring(0, data.length - 2) +
                  "." +
                  data.substring(data.length - 2);
            });
        }
      });
  }

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
          child: Column(
        children: [
          Text(text),
          TextField(
            controller: controller,
          ),
        ],
      )),
    );
  }
}

Maybe padLeft or InputFormatter is better option for TextFiled. I am assuming you are using buttons from your UI.