0

我有一个 TextFormField,如果用户离开它,应该填充特定的文本。例如,如果用户编辑字段并输入“Test”,并且我不想允许字符串“Test”,那么一旦字段失去焦点,它应该用“Sike!”替换文本。所以像 onChanged 之类的,但事件是焦点的丢失,而不是价值的变化,这是我到目前为止所拥有的:

TextFormField(
   controller: myController,
   onChanged: (value) {
     if (value == "Test"){
       myController.text = "Sike!";
     }
   },
.............
.............
4

1 回答 1

3

您可以这样做的一种方法是这样。

class _DemoState extends State<Demo> {
  final node = FocusNode();
  final tc = TextEditingController();

  @override
  void initState() {
    node.addListener(() {
      if (!node.hasFocus && tc.text == 'Test') {
        tc.text = "Sike!";
      }
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return TextFormField(
      controller: tc,
      focusNode: node,
    );
  }
}
于 2021-04-26T13:54:41.593 回答