【问题标题】:How to show and use textformfield under each post in flutter?如何在flutter中显示和使用每个帖子下的textformfield?
【发布时间】:2021-06-09 13:18:59
【问题描述】:

我有一个帖子屏幕,其中显示帖子列表。我想在每个帖子的底部添加一个 textformfield,以便用户可以在特定帖子上输入他们的 cmets。正如我们所知,我们无法为多个文本表单字段创建 TextEditingController。

如何在每个帖子中创建、显示和使用 textformfield 以输入用户 cmets?

【问题讨论】:

  • 好的,您已经了解了编辑控件的工作原理。请停止来回重复这个问题的内容。决定你想要它的样子,然后把它留在那里

标签: flutter dart


【解决方案1】:

我确信有多种方法可以做到这一点,但这里有一种相当简单的方法。

创建一个Map,其中键是TextFormField,值是TextEditingController。

Map<TextFormField, TextEditingController> fields = new Map<TextFormField, TextEditingController>();

为每个帖子创建一个新的控制器和文本字段并将它们添加到地图中。

fields[text] = controller;

当您想要获取值时,可以将文本字段传递给从 Map 获取该字段的控制器的方法。

这是一个非常基本的例子,说明了它是如何工作的:

import 'package:flutter/material.dart';

class DynamicTextFieldsWithControllers extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => DynamicTextFieldsWithControllersState();
}

class DynamicTextFieldsWithControllersState extends State<DynamicTextFieldsWithControllers> {

  Map<TextFormField, TextEditingController> fields = new Map<TextFormField, TextEditingController>();

  @override
  Widget build(BuildContext context) {
    List<Widget> widgets = [];
    for(int i = 0; i < 5; i++) {
      TextEditingController controller = new TextEditingController();
      TextFormField text = TextFormField(
        controller: controller,
      );
      fields[text] = controller;
      widgets.add(Container(
        margin: EdgeInsets.symmetric(horizontal: 8.0, vertical: 15.0),
        child: Column(children: [
          text,
          FlatButton(
            color: Colors.blue,
            child: Text("Submit", style: TextStyle(color: Colors.white)),
            onPressed: () {
              getTextValue(text);
            },
          )
        ],)
      ));
    }
    return Scaffold(
      body: Column(children: widgets),
    );
  }

  getTextValue(TextFormField text) {
    TextEditingController controller = fields[text];
    String value = controller.text;
    print(value);
    return value;
  }
  
}

【讨论】:

  • 感谢@daddygames 的关注,我今天晚上试试。再次感谢。
  • @Kamlesh 如果这篇文章有助于回答您的问题,请将其标记为答案。谢谢,编码愉快!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多