单击按钮在同一屏幕上显示TextField值

时间:2020-05-18 10:44:53

标签: flutter dart

这是我的屏幕,上面有TextFieldButton。当有人单击“显示”按钮时,我希望它在按钮下方显示名称,如下图所示。

enter image description here enter image description here

以下代码:


class Demo extends StatefulWidget {
  @override
  _DemoState createState() => _DemoState();
}

class _DemoState extends State<Demo> {
  final name = TextEditingController();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          children: [
            Row(
              children: [
                Text(
                  'Name'
                ),
                TextField(
                  controller: name,
                )
              ],
            ),
            RaisedButton(
              onPressed: (){

              },
              child: Text('Show'),
            )
          ],
        ),
      ),
    );
  }
}

3 个答案:

答案 0 :(得分:1)

初始化两个变量。一个用于JOIN,另一个用于文本值。

GROUP BY

给TextField一个控制器。

TextEditingController

在按钮中,将onPressed设置为将显示文本更改为控制器文本。

TextEditingController controller = TextEditingController();
String display = '';

然后在要显示文本的位置,设置要显示的文本字符串。

TextField(controller:controller);

答案 1 :(得分:1)

这可能是您问题的基本示例。用户界面与上面显示的不完全一样

class Question extends StatefulWidget {
  Question({Key key}) : super(key: key);

  @override
  _QuestionState createState() => _QuestionState();
}

class _QuestionState extends State<Question> {
  String text = '';
  bool shouldDisplay = false;

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Center(
          child: TextField(
            onChanged: (value) {
              setState(() {
                text = value;
              });
            },
          ),
        ),
        FlatButton(onPressed: () {
          setState(() {
            shouldDisplay = !shouldDisplay;
          });
        }, child: Text('Submit')),
        shouldDisplay ? Text(text) : Spacer()
      ],
    );
  }
}

希望这会有所帮助。

答案 2 :(得分:1)

在建议这类问题之前,我建议您先学习颤振的基础知识。通过使用TextEditingControllersetState()可以简单地实现这一点。只需为您的TextField定义一个控制器,然后在按下按钮时调用setState()。请注意,您必须在StatefulWidget上,因为调用setState()会重建UI。

在@override窗口小部件构建上方创建一个TextEditingController和字符串:

  String displayName="";
  final myController = TextEditingController();

创建一个TextField并添加为其分配控制器:

TextField(
  controller: myController,
);

在按下的按钮上呼叫setState()

MaterialButton(
child: Text("Show"),
onPressed: (){
 setState(() {
  displayName=myController.text;
 });
})

使用Text小部件显示它:

Text(displayName);

祝你好运! 您可以在此处找到如何使用TextEditingControllerhttps://flutter.dev/docs/cookbook/forms/retrieve-input

更多有关小部件的信息:https://www.youtube.com/playlist?list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG