【问题标题】:i have a ListView Builder and i want to place a List of TextEditingController in a List我有一个 ListView Builder,我想在一个列表中放置一个 TextEditingController 列表
【发布时间】:2022-11-17 19:25:19
【问题描述】:

我有一个 ListView Builder,我想在列表中放置一个 TextEditingController 列表。但它给出了一个错误,“预期找到一个标识符”。我很困惑。 `

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

class ListViewBuilder extends StatefulWidget {
  const ListViewBuilder({super.key});

  @override
  State<ListViewBuilder> createState() => _ListViewBuilderState();
}

class _ListViewBuilderState extends State<ListViewBuilder> {
  final _formKey = GlobalKey<FormState>();
  // final TextEditingController controller;
  List validators = [
    (value) {
      if (value == null || value.isEmpty) {
        return 'Please enter the number';
      }
      return null;
    },
    (value) {
      if (value == null || value.isEmpty) {
        return 'Please enter the email';
      }
      return null;
    },
    (value) {
      if (value == null || value.isEmpty) {
        return 'Please enter the password';
      }
      return null;
    },
  ];
  List formatters = [
    FilteringTextInputFormatter.digitsOnly,
    FilteringTextInputFormatter.allow(RegExp('[a-zA-Z]')),
    FilteringTextInputFormatter.deny(RegExp(r'[/\\]'))
  ];
    ///Error happens here!!
  List controller = [
  final _name = TextEditingController();
  final _age = TextEditingController();
  final _height = TextEditingController();
  final _color = TextEditingController();
  final _dateofBirt = TextEditingController();
  final _Nationality = TextEditingController();

  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Form(
        key: _formKey,
        child: ListView.builder(
          itemCount: 3,
          itemBuilder: (context, index) {
            return TextFormField(
              controller: controller[index],
              validator: validators[index],
              inputFormatters: [formatters[index]],
            );
          },
        ),
      ),
      floatingActionButton: FloatingActionButton(
        child: Text('Click'),
        onPressed: () {
          if (_formKey.currentState!.validate()) {
            // If the form is valid, display a snackbar. In the real world,
            // you'd often call a server or save the information in a database.
            ScaffoldMessenger.of(context)
                .showSnackBar(SnackBar(content: Text('Processing Data')));
          }
        },
      ),
    );
  }
}

`

我将控制器设为变量。也尝试单独分配它们,但仍然出现错误。 我将控制器设为变量。也尝试单独分配它们,但仍然出现错误。 我将控制器设为变量。也尝试单独分配它们,但仍然出现错误。

【问题讨论】:

  • List controller = List.generate(6, (i) =&gt; TextEditingController());

标签: flutter


【解决方案1】:

如果你喜欢使用 TextEditingController 的列表,你不需要将它分配给单独的变量。

  List controller = [
    TextEditingController(),
    TextEditingController(),
    TextEditingController(),
    TextEditingController(),
    TextEditingController(),
    TextEditingController(),
  ];

您也可以使用List.generate

现在要获得您在第一项上定义的_name,您需要为_name 使用类似controller[0] 的索引。 _agecontroller[1] ,等等。

你可以得到像这样的文字

controller[index].text

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多