最小代码:
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));
}
}
[在Android和iOS上运行此代码,输入123456789之类的数字,在Android中,它会打印一些奇怪的序列,但在iOS中确实有效。谁能告诉我代码有什么问题吗?
Android输出
iOS输出
0
投票
将此添加到软件包的pubspec.yaml文件中:
依赖关系:flutter_masked_text:^ 0.8.0 创建蒙版控制器 将控制器设置为您的文本字段:
class MyPage extends StatelessWidget { var _controller = new MaskedTextController(mask: '000,000,000,00');
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(44.0),
child: Center(
child: TextField(controller: _controller)
)
)
);
}
}