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.