首页 > 解决方案 > 为什么我要把 Flutter 中的字符串设为空?

问题描述

我对一件简单的事情有疑问,但我不知道它是如何在代码中发生的。下面是代码:

  Widget build(BuildContext context) {
    String newTaskTitle;
    return Container(
      color: Color(0xff757575),
      child: Container(
        padding: EdgeInsets.all(20.0),
        decoration: BoxDecoration(
          color: Colors.white,
          borderRadius: BorderRadius.only(
            topLeft: Radius.circular(20.0),
            topRight: Radius.circular(20.0),
          ),
        ),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: <Widget>[
            Text(
              'Add Task',
              textAlign: TextAlign.center,
              style: TextStyle(
                fontSize: 30.0,
                color: Colors.lightBlueAccent,
              ),
            ),
            TextField(
              autofocus: true,
              textAlign: TextAlign.center,
              onChanged: (newText) {
                newTaskTitle = newText;
              },
            ),
            FlatButton(
              child: Text(
                'Add',
                style: TextStyle(
                  color: Colors.white,
                ),
              ),
              color: Colors.lightBlueAccent,
              onPressed: () {
                print(newTaskTitle);
              },
            ),
          ],
        ),
      ),
    );
  }

我尝试获取文本字段输入的值并将其传递到另一个屏幕,但是当我键入内容然后按下按钮时,它给了我空值。 在此处输入图像描述

标签: androidflutterdartmobile

解决方案


您已经在 build() 方法中定义 了String newTaskTitle尝试从 build 方法中删除它并尝试在 StatefulWidget 中定义它。

发生这种情况是因为每次更改文本时,更改方法上的 TextField 都会调用 build() 方法


推荐阅读