首页 > 解决方案 > 为什么我看不到 useTextEditingController 值的更新?

问题描述

我希望效果会在文本更改时记录文本的当前值,但它仅针对初始值运行。为什么?

class RecordForm extends HookWidget {
  final Record? record;
  const RecordForm({
    Key? key,
    this.record,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {

    final initialTitle = record != null ? record!.title : "";
    final _title = useTextEditingController
      .fromValue(TextEditingValue(text: initialTitle));

    useEffect((){
      log.wtf(_title.value.text);
    }, [_title.value]);

    return // ...
       TextFormField(
         controller: _title,
         // ...
       ),
     // ...
     ;
  }
}

标签: flutterflutter-hooks

解决方案


这样做会初始化 TextEditingController 一次。我认为,如果您想收听实时更改,则必须为其添加侦听器。

TextEditingController controller = useTextEditingController();
        
        controller.addListener(() { 
          print(controller.text);
        });

推荐阅读