dart - TextField ErrorText 不会刷新状态

标签 dart flutter

我目前在 SimpleDialog 中嵌入了一个 TextField,用于输入信息。输入的信息需要在使用前进行验证。如果此验证失败,我想使用 TextField 的 ErrorText 字段显示一条错误消息。此验证在用户按下“保存”按钮时发生。

失败时,我将文本的值从 null 更新为“Error!”。我知道这是正确完成的,因为如果我退出 SimpleDialog 然后返回对话框,文本就会更新。显然这是状态的问题。

这是保存按钮的 OnPressed 方法的代码:

onPressed: () {
    if (!checkDevEUICorrectness()) {
        setState(() {
            devEUIErrorText = "Error!";
        });
    }
    else {
        setState((){
            devEUIErrorText = null;
        });
    }
},

这里是 TextField 的一小段代码:

new TextField(

controller: devEUIController,
    decoration: new InputDecoration(
        errorText: devEUIErrorText,
        // This is the save button whose code is above
        icon: new IconButton(...implementation...),
    ),
),

我应该如何正确更新文本的状态?与我在网上看过的许多指南相比,我看不出我正在做的事情有什么不同。

最佳答案

您发布的代码没有任何帮助,但我认为可能是什么错误。 当我们在按钮上打开一个 SimpleDialog 并尝试在其中执行某些操作时。 注意这里的 SimpleDialog 作为一个 stateless widget 。 当我们写

showDialog(
context: context,
builder: (BuildContext context){
return SimpeDialog(
.... // the code for deigning the simpleDialog
);
});

尽管如此,您还需要做的。 你需要做这样的事情:-

showDialog(
context: context,
builder: (BuildContext context){
return DialogDemo();
});

DialogDemo 中创建一个 stateful widget 并在该 widget 中复制粘贴所有代码到您的主要构建函数下。

class DialogDemo extends StatefulWidget {
  DialogDemoState createState() => new DialogDemoState();
}

class DialogDemoState extends State<DialogDemo> {

  @override
  void initState() {
    super.initState();
  }

  @override

  Widget build(BuildContext context) {
return SimpleDialog(
.... // the code for deigning the simpleDialog
);
}
}

关于dart - TextField ErrorText 不会刷新状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51410056/

相关文章:

android - SQLite 连接在 Flutter 中返回 null

Flutter LinearProgressIndicator 相对高度

dart - 独特的 dart 包名称

flutter - 弹出菜单 setstate 不会更新 Flutter

flutter - 如何向下扩展定位的容器?

firebase - 在哪里初始化 initState() 中需要的变量?

dart - 如何在 WebStorm 中运行 build.dart?

flutter - 发生更改时,TextFormField光标没有移动

android - Flutter Plugin : crash_dump. cpp:无法附加到线程 185:权限被拒绝

在 Flutter 中使用 ListView 进行分页