0

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
Md. Yeasin Sheikh
  • 54,221
  • 7
  • 29
  • 56
gan jinqu
  • 21
  • 2

1 Answers1

0

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.

Md. Yeasin Sheikh
  • 54,221
  • 7
  • 29
  • 56