可换行输入框

  1. // TextField属性设置
  2. keyboardType: TextInputType.multiline,
  3. textInputAction: TextInputAction.newline,


整数输入框

  1. // TextField属性设置
  2. keyboardType: TextInputType.number,
  3. inputFormatters: [WhitelistingTextInputFormatter.digitsOnly],

价格输入框(保留2位小数点)

在ios中TextInputType.number键盘类型将没有小数点,解决这个问题可以使用TextInputType.numberWithOptions(decimal: true)。
另外需要注意的是不能在onChange事件中去获取输入结果,因为输入真实结果跟onChange中的监听参数会出现不一致的情况,确保真实有效,建议使用TextEditingController()中的text属性值。

  1. import 'package:flutter/services.dart';
  2. // 输入格式类
  3. class MoneyTextInputFormatter extends TextInputFormatter{
  4. @override
  5. TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
  6. String newvalueText=newValue.text;
  7. if(newvalueText=="."){
  8. //第一个数为.
  9. newvalueText="0.";
  10. } else if(newvalueText.contains(".")){
  11. if(newvalueText.lastIndexOf(".")!=newvalueText.indexOf(".")){
  12. //输入了2个小数点
  13. newvalueText= newvalueText.substring(0,newvalueText.lastIndexOf('.'));
  14. }else if(newvalueText.length-1-newvalueText.indexOf(".")>2){
  15. //输入了1个小数点 小数点后两位
  16. newvalueText=newvalueText.substring(0,newvalueText.indexOf(".")+3);
  17. }
  18. }
  19. return TextEditingValue(
  20. text: newvalueText,
  21. selection: new TextSelection.collapsed(offset: newvalueText.length),
  22. );
  23. }
  24. }
  25. // TextField属性设置
  26. inputFormatters: [
  27. WhitelistingTextInputFormatter(RegExp("[0-9.]")),
  28. LengthLimitingTextInputFormatter(9),
  29. MoneyTextInputFormatter()
  30. ],
  31. keyboardType: TextInputType.numberWithOptions(decimal: true),

跳转到下一步设置

  1. TextEditingController priceCtrl = TextEditingController();
  2. FocusNode priceNode = FocusNode();
  3. // TextField属性设置
  4. controller: priceCtrl,
  5. focusNode: priceNode,
  6. textInputAction: TextInputAction.next,
  7. onEditingComplete: () {
  8. priceNode.nextFocus();
  9. },