Flutter如何将TextEditingController内容转换为double类型进行算术运算
TextEditingController输入转double实现算术计算的方案
你原有代码的问题在于没有从控制器中取出输入文本,也没有做字符串到数字的类型转换,正确实现方式如下:
基础实现(默认非法输入按0处理)
控制器定义
和你的原有定义保持一致即可:
final value1Controller = TextEditingController(); final value2Controller = TextEditingController();
计算函数实现
/// 两个输入值的求和计算 double calculateSum() { // 从控制器中获取输入字符串,转double,转换失败默认赋值0 double v1 = double.tryParse(value1Controller.text) ?? 0.0; double v2 = double.tryParse(value2Controller.text) ?? 0.0; return v1 + v2; } /// 减法计算实现 double calculateSubtract() { double v1 = double.tryParse(value1Controller.text) ?? 0.0; double v2 = double.tryParse(value2Controller.text) ?? 0.0; return v1 - v2; }
带输入校验的实现(主动抛出非法输入提示)
如果需要对用户输入做严格校验,不允许非法输入参与计算,可以用如下写法:
/// 严格模式计算,输入非法时抛出异常 double calculateSumStrict() { String text1 = value1Controller.text.trim(); String text2 = value2Controller.text.trim(); if (text1.isEmpty || text2.isEmpty) { throw Exception("输入值不能为空"); } double? v1 = double.tryParse(text1); double? v2 = double.tryParse(text2); if (v1 == null || v2 == null) { throw Exception("请输入合法的数字"); } return v1 + v2; }
调用时可以捕获异常给用户做弹窗提示即可。
内容的提问来源于stack exchange,提问作者Learning Code
相关产品推荐
相关产品推荐

