当我使用普通列表或 ListView.Builder 时出现范围错误。如何获得以下 TextFormFields 的总和?

Getting Range Error when I use normal List or ListView.Builder. How do I get the sum of below TextFormFields?

int numberOfTextFields = 1;
List<TextEditingController> textFieldControllers = [];
final _numsFormKey = GlobalKey<FormState>();

Form(
                key: _numsFormKey,
                child: ListView.builder(
                  shrinkWrap: true,
                  itemCount: numberOfTextFields,
                  itemBuilder: (BuildContext? context, int? index) {
                    int i = index! + 1;
                    return Row(
                      children: [
                        Container(
                          height: 52,
                          width: 140,
                          margin: EdgeInsets.only(left: 20.0, bottom: 10),
                         
                          child: TextFormField(
                            keyboardType: TextInputType.number,
                            // controller: textFieldControllers[index], //getting range error if i use this

                            decoration: InputDecoration(
                              hintText: 'Enter Number $i',
                              border: OutlineInputBorder(
                                borderRadius: BorderRadius.circular(5.0),
                              ),
                         
                            ),
                            style: TextStyle(
                              color: Color.fromARGB(255, 0, 0, 0),
                              fontWeight: FontWeight.w400,
                              fontSize: 24,
                            ),
                            validator: (value) {
                              if (value!.isEmpty) {
                                return "Enter or delete";
                              } else if (value.length > 12) {
                                return "Enter < 12 digits";
                              }
                              return null;
                            },
                            onSaved: (value) {}

在下面使用的 IconButton onpressed:

onPressed: () {
                              print("number of boxes=$numberOfTextFields");
                              textFieldControllers
                                  .add(TextEditingController());
                              numberOfTextFields++;
                              setState(() {
                              
                              });
                            }),

有一个保存按钮,点击它:

_validateNums() async {
    if (_numsFormKey.currentState != null &&
        _numsFormKey.currentState!.validate()) {
      _numsFormKey.currentState!.save();
    } else {
      
    }
  }

当我在 OnSaved{} 中打印(值)或打印(int.parse(值))时,它会打印我输入的所有值。

 double totalsum = (textFieldControllers.fold(0,(previousValue, element) {return previousValue +
        double.tryParse(element.value.text)!; + double.parse(element.value.text); 

我无法使用上面的内容,因为在 TextFormField 中使用控制器时出现范围错误。

如何在单击“保存”按钮时获得所有这些值的总和。我尝试使用 for 循环但它没有用

int numberOfTextFields = 1;
List<TextEditingController> textFieldControllers = [];

你声明你有 1 个文本字段,但一开始你有 0 个,你总是会说你有更多的文本字段,这就是你得到范围错误的原因。

此外,textFieldControllers 是一个列表,这意味着它有一个长度方法可以为您跟踪项目的数量:

print("number of boxes=${textFieldControllers.length}");
...
itemCount: textFieldControllers.length,
itemBuilder: (BuildContext? context, int? index) {
...