Flutter:如何将文本字段的输入保存到 int 变量?

Flutter : how do i save input from a text field to an int variable?

这是我的文本控制器

final amountController = TextEditingController();
         @override
      void dispose() {
        amountController.dispose();
        super.dispose();
      }

当我想将项目添加到列表时,有一个图标按钮显示一个对话框,其中包含一个文本字段,我应该在其中获取输入。

    IconButton(
              icon: Icon(Icons.add),
              onPressed: () {
//                //this is the part where i add a new income to my list
                showDialog(
                    context: context,
                    builder: (context) => AlertDialog(
                          title: Text('Add income'),
                          content: TextField(
                            keyboardType: TextInputType.number,
                            controller: amountController,
                            onChanged: (s) {
                              int s = int.parse(amountController.text);
                              amount = s;
                              transactions.add(s);
                            },
                          ),
                        ));
              }),

问题是我不知道如何保存这里的数据

    List<int> transactions = [];
  int amount = 0;

我尝试了另一种方式:

    TextEditingController _textFieldController = TextEditingController();
  List<int> transactions = [];
  int Total = 0;
  Future<void> _displayTextInputDialog(BuildContext context) async {
    int Amount = 0;
    String valueText = '';
    return showDialog(
        context: context,
        builder: (context) {
          return AlertDialog(
            title: Text('Add income'),
            content: TextField(
              keyboardType: TextInputType.number,
              onChanged: (value) {
                setState(() {
                  valueText = value;
                });
              },
              controller: _textFieldController,
            ),
            actions: <Widget>[
              FlatButton(
                color: Colors.red,
                textColor: Colors.white,
                child: Text('CANCEL'),
                onPressed: () {
                  setState(() {
                    Navigator.pop(context);
                  });
                },
              ),
              FlatButton(
                color: Colors.green,
                textColor: Colors.white,
                child: Text('OK'),
                onPressed: () {
                  setState(() {
                    Amount = int.parse(valueText);
                    transactions.add(Amount);
                    Total = Total + Amount;
                    print(Amount);
                    Navigator.pop(context);
                  });
                },
              ),
            ],
          );
        });
  }

我只是在平面按钮中调用了函数

你不应该在 onChanged 方法中写下这一行 transactions.add(s);,因为这样你输入的每个数字都会在列表中添加一个值。 所以你必须将 onChanged 值分配给金额值,并在按钮的 onPressed 方法中向对话框添加一个按钮添加此行 transactions.add(s);