在颤振中添加存储在文本字段中的两个数字的问题我不知道出了什么问题

问题描述

我正在尝试将两个数字相加,但不能。 我认为它应该足够简单,但我想事实并非如此。我认为一切都很好,但它根本不起作用。

 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”的按钮,并添加另一个显示两个数字相加结果的文本框。