问题描述
我正在尝试将两个数字相加,但不能。 我认为它应该足够简单,但我想事实并非如此。我认为一切都很好,但它根本不起作用。
import 'package:Flutter/material.dart';
void main() { runApp(ClassMaterial()); }
class ClassMaterial extends StatefulWidget { @override _Tax
createState() => _Tax(); }
class _Tax extends State<ClassMaterial> {
bool _value = false;
bool a = false;
bool b = false;
final TextEditingController x = TextEditingController();
final TextEditingController y = TextEditingController();
var basic = 0,other = 0,sum = 0;
void doSum() {
setState(() {
basic = int.parse(x.text);
other = int.parse(y.text);
sum += basic + other;
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('SALARY TAX CALculaTOR'),centerTitle: true,),body: Card(
child:
Column(crossAxisAlignment: CrossAxisAlignment.start,children: [
Container(
margin: EdgeInsets.fromLTRB(10,10,0),child: Text('GENDER',textAlign: TextAlign.left,style: TextStyle(fontSize: 25,fontWeight: FontWeight.bold)),Row(
children: <Widget>[
Container(margin: EdgeInsets.fromLTRB(20,15,0)),Text('Male'),(CheckBox(
value: _value,onChanged: (value) {
setState(() {
_value = value;
a = false;
b = false;
});
}))
],Text('Female'),(CheckBox(
value: a,onChanged: (value) {
setState(() {
a = value;
_value = false;
b = false;
});
}))
],3,Text('Couple'),(CheckBox(
value: b,onChanged: (value) {
setState(() {
b = value;
_value = false;
a = false;
});
}))
],Container(
margin: EdgeInsets.fromLTRB(10,child: Text('SALARY DETAILS',TextField(
controller: x,decoration: Inputdecoration(
labelText: "Basic Salary(Monthly)",fillColor: Colors.white,border: new OutlineInputBorder(
borderRadius: new BorderRadius.circular(25.0),borderSide: new BorderSide(),//fillColor: Colors.green
),keyboardType: TextInputType.number,style: new TextStyle(
fontFamily: "Poppins",TextField(
controller: y,decoration: Inputdecoration(
labelText: "Other Salary(Monthly)",Text("$sum")
])),);
} }
解决方法
像这样改变 doSum():
void doSum() {
setState(() {
basic = x.text.isEmpty ? 0 : int.parse(x.text);
other = y.text.isEmpty ? 0 : int.parse(y.text);
sum = basic + other;
});
}
并像这样在 TextFields 中添加 onChnaged:
onChanged: (String value) {
doSum();
},
如果这能解决您的问题,请告诉我。
,在您的代码中,您添加了 2 个文本框,您可以在其中输入两个数据。您的代码中没有任何内容调用添加这两个数据。
现在您需要添加一个名为“add”的按钮,并添加另一个显示两个数字相加结果的文本框。