Flutter 如何识别颤振的开始键入和结束(关闭键盘)

Flutter 如何识别颤振的开始键入和结束(关闭键盘),flutter,dart,Flutter,Dart,是否可以在颤振时识别开始键入和结束(关闭键盘) TextField( decoration: InputDecoration( hintText: 'Type a message', border: InputBorder.none, ), cursorColor: Palette.defaultColor, maxLines: 6

是否可以在颤振时识别开始键入和结束(关闭键盘)

       TextField(
            decoration: InputDecoration(
              hintText: 'Type a message',
              border: InputBorder.none,
            ),
            cursorColor: Palette.defaultColor,
            maxLines: 6,
            minLines: 1,
            controller: controller,
          ),

您可以定义一个布尔值,并在onChanged方法中使其为真,并在2秒钟后将其变为假,如果停止写入,则将保持假,否则将变为真

  bool _isWriting = false;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(18.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                '${_isWriting ? "Writing..." : "writing stopped"}',
                style: Theme.of(context).textTheme.headline4,
              ),
              TextField(
                decoration: InputDecoration(
                  hintText: 'Type a message',
                  border: InputBorder.none,
                ),
                cursorColor: Colors.cyan,
                maxLines: 6,
                minLines: 1,
                controller: controller,
                onChanged: (text) {
                  if (!_isWriting){
                    _isWriting = true;
                    setState((){});
                    Future.delayed(Duration(seconds: 2)).whenComplete((){
                      _isWriting = false;
                      setState((){});
                    });
                  }
                }
              ),
            ],
          ),
        ),
      ),      
    );
  }
bool\u isWriting=false;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:中(
孩子:填充(
填充:常数边集全部(18.0),
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
正文(
“${u正在写作?”正在写作…:“写作已停止”}”,
风格:Theme.of(context).textTheme.headline4,
),
文本字段(
装饰:输入装饰(
hintText:'键入消息',
边框:InputBorder.none,
),
cursorColor:Colors.cyan,
maxLines:6,
小姑娘:1,
控制器:控制器,
一旦更改:(文本){
如果(!\u正在写入){
_isWriting=true;
setState((){});
未来。延迟(持续时间(秒:2))。完成时(){
_isWriting=false;
setState((){});
});
}
}
),
],
),
),
),      
);
}

这里是一个现场演示

您可以定义一个布尔值,并在onChanged方法中使其为真,然后在2秒钟后将其变为假,如果停止写入,则它将保持假,否则它将变为真

  bool _isWriting = false;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(18.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                '${_isWriting ? "Writing..." : "writing stopped"}',
                style: Theme.of(context).textTheme.headline4,
              ),
              TextField(
                decoration: InputDecoration(
                  hintText: 'Type a message',
                  border: InputBorder.none,
                ),
                cursorColor: Colors.cyan,
                maxLines: 6,
                minLines: 1,
                controller: controller,
                onChanged: (text) {
                  if (!_isWriting){
                    _isWriting = true;
                    setState((){});
                    Future.delayed(Duration(seconds: 2)).whenComplete((){
                      _isWriting = false;
                      setState((){});
                    });
                  }
                }
              ),
            ],
          ),
        ),
      ),      
    );
  }
bool\u isWriting=false;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:中(
孩子:填充(
填充:常数边集全部(18.0),
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
正文(
“${u正在写作?”正在写作…:“写作已停止”}”,
风格:Theme.of(context).textTheme.headline4,
),
文本字段(
装饰:输入装饰(
hintText:'键入消息',
边框:InputBorder.none,
),
cursorColor:Colors.cyan,
maxLines:6,
小姑娘:1,
控制器:控制器,
一旦更改:(文本){
如果(!\u正在写入){
_isWriting=true;
setState((){});
未来。延迟(持续时间(秒:2))。完成时(){
_isWriting=false;
setState((){});
});
}
}
),
],
),
),
),      
);
}
这里是一个现场演示