Validation 无法在Flatter中的验证程序中获取正确的值 复制步骤 去吧 在计算答案的字段中输入任何值 添加0。开始任何字段

Validation 无法在Flatter中的验证程序中获取正确的值 复制步骤 去吧 在计算答案的字段中输入任何值 添加0。开始任何字段,validation,flutter,dart,textformfield,Validation,Flutter,Dart,Textformfield,预期结果:验证程序应返回0.xyz 实际结果:验证程序返回0xyz 找到解决方法:使用onSaved解决此问题 有人能告诉我为什么会发生这种情况,或者它是颤振中的bug吗?那么我将在颤振回购中发行一个新的版本 我正在将来自验证器的值和一次更改的解析字符串值打印为int。Edit 当输入23然后输入惰性0.时,此行amount=int.parse(val)执行并停止,然后单击计算按钮,因此金额为23,值为运行时类型为String023 TextFormField( keyboardType:

预期结果:验证程序应返回0.xyz

实际结果:验证程序返回0xyz

找到解决方法:使用onSaved解决此问题

有人能告诉我为什么会发生这种情况,或者它是颤振中的bug吗?那么我将在颤振回购中发行一个新的版本

我正在将来自验证器的值和一次更改的解析字符串值打印为int。

Edit
当输入
23
然后输入惰性
0.
时,此行
amount=int.parse(val)执行并停止,然后单击计算按钮,因此金额为
23
值为
运行时类型为
String
023

TextFormField(
  keyboardType: TextInputType.number,
  validator: (value) {
    print("amount $amount");
    print(" ${value.runtimeType}");
    print("validator amount value $value ");
    if (value.isEmpty) {
      return "Enter some amount";
    } else if (double.parse(value).toInt() <= 0) {
      return "Amount should be greater than 0";
    }
    return null;
  },
  onChanged: (val){
    print("val1 $val");
    amount = int.parse(val);
    print("amount $amount");
  }
编辑
当输入
23
然后输入惰性
0.
时,此行
amount=int.parse(val)执行并停止,然后单击计算按钮,因此金额为
23
值为
运行时类型为
String
023

TextFormField(
  keyboardType: TextInputType.number,
  validator: (value) {
    print("amount $amount");
    print(" ${value.runtimeType}");
    print("validator amount value $value ");
    if (value.isEmpty) {
      return "Enter some amount";
    } else if (double.parse(value).toInt() <= 0) {
      return "Amount should be greater than 0";
    }
    return null;
  },
  onChanged: (val){
    print("val1 $val");
    amount = int.parse(val);
    print("amount $amount");
  }

这不是颤振错误,但当您将amount作为整数时,任何值都以0开头,颤振将其作为0

if (value.isEmpty) {
   return "Enter some amount";
} else if (double.parse(value) <= 0) {
   return "Amount should be greater than 0";
}
return null;

这不是颤振错误,但当您将amount作为整数时,任何值都以0开头,颤振将其作为0

if (value.isEmpty) {
   return "Enter some amount";
} else if (double.parse(value) <= 0) {
   return "Amount should be greater than 0";
}
return null;

是的,但如果我将其解析为int,那么我得到的输出是02而不是0.2,当我尝试您提供的代码时,小数点没有向上显示,当我解析为int时,我从0.2得到了0,这是合理的,但我是否理解错了,因为得到不同的结果没有意义。我编辑了这个问题,看一看,我找到了解决办法,但我很困惑,为什么我得到的值是02。是的,但如果我解析为int,那么我得到的输出是02,而不是小数点后的0.2在我尝试你提供的代码时没有显示出来,当我解析为int时,我从0.2得到了0,这是合理的,但我是否误解了你,因为得到不同的结果没有意义。我编辑了这个问题,看一看,我找到了解决办法,但我很困惑为什么我得到值为02。得到了你的解释,但我在调试中看到我得到的是“02”,既不是“2”,也不是“0.2”我已经编辑了我的答案。因为值的运行时类型变成了字符串。我编辑了这个问题,看一看,我找到了解决方法,但我不明白为什么我将值设置为02。得到了您的解释,但我在调试中看到,我得到了“02”,既没有“2”也没有“0.2”,我已经编辑了我的答案。因为value的运行时类型变成了string。我已经编辑了这个问题,看一看,我找到了解决方法,但我不明白为什么我会将value设置为02。