我想做一個簡單的計算器。我想在一個函式中完成所有操作,而不是為每個操作單獨定義函式,但是我收到一個錯誤,我無法弄清楚為什么我會收到這個錯誤。
late num numberOne, numberTwo;
String result = '';
mathFunction(String text) {
if (textControllerTwo != '0') {
numberOne = num.tryParse(textControllerOne.text)!;
numberTwo = num.tryParse(textControllerTwo.text)!;
switch (text) {
case 'collection':
return result = (numberOne numberTwo).toString();
case 'interest':
return result = (numberOne - numberTwo).toString();
case 'multiply':
return result = (numberOne * numberTwo).toString();
case 'divided':
return result = (numberOne / numberTwo).toString();
}
} else {
return result = 'Number cannot be divided by 0';
}
setState(() {});
}
uj5u.com熱心網友回復:
default在您的switch陳述句中添加子句。- 為
numtryParse 中的每個值提供一個默認值。 - 洗掉
setState(() {});是因為side effect在呼叫函式/方法時不能給出 a 。 - 無需為函式作用域代碼使用類/檔案作用域變數 (
numberOne,numberTwo,result)。 - 為您的函式/方法提供回傳型別。
這里你的簡化代碼:
// return a string result from mathFunction.
String mathFunction(String text) {
if (textControllerTwo != '0') {
// Give 0 if parse failed.
num numberOne = num.tryParse(textControllerOne.text)??0;
num numberTwo = num.tryParse(textControllerTwo.text)??0;
switch (text) {
case 'collection':
return (numberOne numberTwo).toString();
case 'interest':
return (numberOne - numberTwo).toString();
case 'multiply':
return (numberOne * numberTwo).toString();
case 'divided':
return (numberOne / numberTwo).toString();
default:
return "ERR";
}
} else {
return 'Number cannot be divided by 0';
}
}
uj5u.com熱心網友回復:
最好在方法引數中獲取 numberOne、numberTwo 并使它們不是可選的或使用所需的 annotaiton。確保 textControllerOne.text 和 textControllerTwo.text 和 text 不為空。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/374040.html
