首页 > 解决方案 > Flutter:listView.builder() 中 textField 的不可预测行为

问题描述

我是 Flutter 的新手。我正在尝试在多个文本字段中从用户那里获取输入,并且这些文本字段可以通过用户选择来减少和增加,因为每个文本字段前面都包含一个删除按钮。因此,当用户按下按钮添加另一个 textField 或删除现有 textField 时,我使用了 listViewBuilder 取决于 List 的大小来管理状态。主要问题是,假设我们有三个文本字段,其中包含一些初始值,并且这些值来自一个列表。笔记:所以预期的结果应该是,当我们删除第一个文本字段时,所有其他文本字段应该使用它们的 initialValues 向上移动一步,但它不是那样工作的。删除第一个 textField 后,List [index] 的值已成功删除,但该值存在于 textField向你描述我的问题。它的行为也与下拉按钮有关。

    class _MyAppState extends State<MyApp> {
    List<String> list = [
    'alphabets',
    'Numeric',
    'special',
    ];
    @override
    Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          children: [
            Expanded(
              child: ListView.builder(
                itemBuilder: (context, index) {
                  return Padding(
                    padding: EdgeInsets.all(10),
                    child: Row(
                      children: [
                        Expanded(
                          child: TextFormField(
                            initialValue: list[index],
                          ),
                        ),
                        SizedBox(
                          width: 5,
                        ),
                        TextButton(
                          onPressed: () {
                            setState(() {
                              list.removeAt(index);
                            });
                          },
                          child: Text('delete'),
                        ),
                      ],
                    ),
                  );
                },
                itemCount: list.length,
              ),
            ),
            TextButton(
              onPressed: () {
                for(int i = 0; i<list.length; i++){
                  print(list[i]);
                }
              },
              child: Text('check remaining values'),
            ),
          ],
        ),
      ),
    );
  }
}

这是相关的图像

标签: flutterdartlistviewtextfield

解决方案


推荐阅读