In case someone is still stuck on this bug. It seems there is no classic way of solving it and most workarounds are volatile and unpredictable. The best solution is to adjust how we can handle the problem at hand.
problem:
The delete, backspace, and/or Arrow keys do not work as expected on Controller-controlled TextInputs and FormInputs on Flutter;
Solution:
create two widgets, a Text widget, and the input widget then switch them as required.
IMPORTANT
Do not use Controller on your input just use the initialValue property and onchanged(){}
Method.
menuProductProviderCart.isReceivedAmountEdit
?TextFormField(
keyboardType:TextInputType.number,
// controller: _receivedAmountController//commented My TextEditcontroller out!!!!!,
onChanged: (amount) {
menuProductProviderCart.setReceivedAmount(double.parse(amount));
},
initialValue: 0.toString(),
enableInteractiveSelection:true,
...
When I click on bills denominations I change widget to Text
; when I click on the received amount which is the text widget I change to TextInputinput
:

This way you are in control of your code and it will never be unpredictable