Flutter:输入文本后自动清除Textfield

发布于 2025-01-15 12:28:17 字数 1775 浏览 4 评论 0原文

我在使用提供程序的 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),
                      )),
                );
}    

当我尝试输入一些文本时,完成后很清楚。 还有如何使文本字段向上移动以显示。

I have this text field in flutter app using provider as shown :

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),
                      )),
                );
}    

When I try to input some text, it is clear after I finish.
Also how make the textfild move up to be shown.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

聚集的泪 2025-01-22 12:28:17

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

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

    TextEditingController 电话控制器 = new TextEditingController();

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

controller : phoneController,

在完成函数上只需调用 :

phoneController.clear();

或尝试在您的提供程序中实现它。

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

    焦点节点phoneFocusNode = new FocusNode();

在您的 TextField 中实现它:

focusNode : phoneFocusNode,

通过调用以下命令将请求焦点放在您想要的位置:

phoneFocusNode.requestFocus();

As i understand from your question you want to clear you TextField after your finish and also you want to focus into your TextField:

  • For the first question: you can simply create TextEditingController for that.

    TextEditingController phoneController = new TextEditingController();

Assign this controller into your TextField:

controller : phoneController,

And on the finish function just call :

phoneController.clear();

Or try to implement that inside your provider.

  • For requesting focus for the TextField, you have to implement FocusNode for that.

    FocusNode phoneFocusNode = new FocusNode();

implement it inside your TextField:

focusNode : phoneFocusNode,

the request focus where ever you want by calling:

phoneFocusNode.requestFocus();
失而复得 2025-01-22 12:28:17

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

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(

the mistake is it controller of textfield mus be outside the method :

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(
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文