文本字段更改的变量值不会在平面按钮中更新

Value of variable altered by Text Field is not updated in Flat Button

这是构建函数。最初为 null 的变量 newTaskTitle 从 TextField 中获取值。但是这个值并没有反映在 Flat Button 小部件中。 newTaskTitle 的值在 FlatButton 小部件中保持为空。帮助我了解哪里出了问题。

Widget build(BuildContext context) {
    String newTaskTitle;

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

要克隆项目,可以在此处找到部分完成的代码:https://github.com/vkmanojk/Flutter/tree/master/todoey_flutter

提前致谢。

嘿 Manoj 我可以看到你已经使用无状态小部件来完成这个任务,并且你在这里声明了你的变量:

Widget build(BuildContext context) {
String newTaskTitle;     <----- Here 

所以我的回答是不要在这里声明它请在全局 umm 中像这样在导入下面声明它

import 'material.dart';
String newTaskTitle;   <--- Here or anywhere outside the scope of Stateless widget

现在我们通常更喜欢使用有状态的小部件来完成这样的任务。 希望这有效:)