Flutter 颤振:消费者在软键盘关闭时触发

Flutter 颤振:消费者在软键盘关闭时触发,flutter,flutter-provider,Flutter,Flutter Provider,我在文本字段中有一个前缀图标。点击它之后,我从服务中得到一个字符串,然后由提供者和使用者将该字符串附加到TextField控制器中 ChangeNotifierProvider( create: (context) => provider, child: Consumer<FacilitiesProvider>( builder: (context, value, child) { if (value.dateString != null &

我在文本字段中有一个前缀图标。点击它之后,我从服务中得到一个字符串,然后由提供者和使用者将该字符串附加到TextField控制器中

ChangeNotifierProvider(
  create: (context) => provider,
  child: Consumer<FacilitiesProvider>(
    builder: (context, value, child) {
      if (value.dateString != null &&
          value.dateString.isNotEmpty) {
        _controller.text = value.dateString;
      }
      return TextField(
        controller: _controller,
ChangeNotifierProvider(
创建:(上下文)=>提供程序,
儿童:消费者(
生成器:(上下文、值、子级){
如果(value.dateString!=null&&
value.dateString.isNotEmpty){
_controller.text=value.dateString;
}
返回文本字段(
控制器:_控制器,
一切都好,问题就在这里

当用户点击文本字段时,软键盘打开,当用户删除字符串并关闭软键盘时,消费者被触发并再次显示
值。dateString
\u controller中设置,并再次显示字符串


如何防止这种情况发生?

问题是,当键盘显示/隐藏时,会重建小部件树,从而导致再次调用生成方法。最佳解决方案是在别处处理值分配,但如果您不关心键盘隐藏屏幕的部分,则可以设置
resizetoavidbottompa在
Scaffold
中添加
false
。如果这确实掩盖了什么,您可以将
正文
包装在
SingleChildScrollView