Minimal code:
import 'package:intl/intl.dart';
import 'package:flutter/material.dart';
void main() => runApp(MaterialApp(home: MyPage()));
class MyPage extends StatelessWidget {
final _controller = TextEditingController(text: "");
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(44.0),
child: Center(
child: TextField(
controller: _controller,
keyboardType: TextInputType.number,
onChanged: (string) {
string = string.replaceAll(RegExp(","), "");
string = _formattedString(string);
_controller.text = string;
_controller.selection = TextSelection.fromPosition(TextPosition(offset: string.length));
},
),
),
),
);
}
_formattedString(string) {
final format = NumberFormat.decimalPattern();
return format.format(int.parse(string));
}
}
Run this code, in both Android and iOS, enter number like 123456789, in Android it prints some weird sequence however it does work in iOS. Can anybody tell me what's wrong in the code?
Android output
iOS output


Add this to your package's pubspec.yaml file:
class MyPage extends StatelessWidget { var _controller = new MaskedTextController(mask: '000,000,000,00');