Flutter:输入文本后自动清除文本字段

Flutter : Textield clear automaticly after input text

我在使用提供程序的 flutter 应用程序中有这个文本字段,如图所示:

getPhoneNumberScreen(size, context) {
  var remianheight = size.height - 70;
  TextEditingController _phoneNumber = TextEditingController();
  TextEditingController _code = TextEditingController();

  return TextField(
                  keyboardType: TextInputType.number,
                  controller:
                      !authProvider.isPhoneNumberInserted ? _phoneNumber : _code,
                  decoration: InputDecoration(
                      isDense: true,
                      hintText: !authProvider.isPhoneNumberInserted
                          ? 'Phone Number'
                          : 'Verification Code',
                      enabledBorder: UnderlineInputBorder(
                        borderSide: const BorderSide(
                          color: Color(0x00000000),
                          width: 1,
                        ),
                        borderRadius: BorderRadius.circular(30),
                      ),
                      focusedBorder: UnderlineInputBorder(
                        borderSide: const BorderSide(
                          color: Color(0x00000000),
                          width: 1,
                        ),
                        borderRadius: BorderRadius.circular(30),
                      ),
                      filled: true,
                      fillColor: ColorManager.helibi,
                      contentPadding:
                          const EdgeInsetsDirectional.fromSTEB(20, 15, 0, 15),
                      prefixIcon: const Icon(
                        Icons.phone_sharp,
                        color: Color(0xFF8F8F8F),
                      )),
                );
}    

当我尝试输入一些文字时,完成后就清楚了。 还有如何让textfild上移显示。

据我从你的问题中了解到,你想在完成后清除你的 TextField,并且你还想专注于你的 TextField:

  • 对于第一个问题:您可以简单地为此创建 TextEditingController。

    TextEditingController phoneController = new TextEditingController();

将此控制器分配到您的 TextField 中:

controller : phoneController,

并且在完成函数上调用:

phoneController.clear();

或者尝试在您的提供商内部实现它。

  • 要为 TextField 请求焦点,您必须为此实现 FocusNode。

    FocusNode phoneFocusNode = new FocusNode();

在您的 TextField 中实现它:

focusNode : phoneFocusNode,

通过调用将请求集中在任何你想要的地方:

phoneFocusNode.requestFocus();

错误是文本字段的控制器必须在方法之外:

TextEditingController _phoneNumber = TextEditingController();
TextEditingController _code = TextEditingController();
getPhoneNumberScreen(size, context) {
  var remianheight = size.height - 70;
  

  return TextField(
                  keyboardType: TextInputType.number,
                  controller:
                      !authProvider.isPhoneNumberInserted ? _phoneNumber : _code,
                  decoration: InputDecoration(