对于 TextField 小部件中的长文本,如何在未聚焦后从头开始显示文本?

Posted

技术标签:

【中文标题】对于 TextField 小部件中的长文本,如何在未聚焦后从头开始显示文本?【英文标题】:For long texts in TextField widget, how to show text from the starting after unfocus? 【发布时间】:2020-12-04 09:04:31 【问题描述】:

上图是TextField。我的电子邮件地址是“dinesh12345678901@gmail.com”。分散注意力后,我需要从下图开始显示电子邮件。有没有办法在颤振中轻松实现这一目标?

例如:参考 gmail 应用程序。

【问题讨论】:

不容易。但是您可能可以从这篇文章 ***.com/questions/51580658/… 有没有其他不减小字体大小的方法? 您必须自己编写一个 TexField 代码才能做到这一点。该链接只是一个关于如何开始这样做的想法。 谢谢肯特。我会试试的。 【参考方案1】:

当您不关注TextField 时,您可以在TextEditingController 上设置selection。这是一个例子:

import 'package:flutter/material.dart';

class TestScreen extends StatefulWidget 
  @override
  _TestScreenState createState() => _TestScreenState();


class _TestScreenState extends State<TestScreen> 
  TextEditingController _textEditingController = TextEditingController();
  FocusNode _focusNode = FocusNode();

  @override
  void dispose() 
    _focusNode.dispose();
    super.dispose();
  

  @override
  Widget build(BuildContext context) 
    return Scaffold(
      body: SafeArea(
        child: Padding(
          padding: const EdgeInsets.symmetric(horizontal: 48),
          child: Column(
            children: <Widget>[
              Container(height: 16),
              TextField(
                controller: _textEditingController,
                focusNode: _focusNode,
              ),
              SizedBox(height: 36),
              FlatButton(
                onPressed: () async 
                  _textEditingController.selection =
                      TextSelection.fromPosition(TextPosition(offset: 0));
                  await Future.delayed(Duration(milliseconds: 100));
                  _focusNode.unfocus();
                ,
                color: Colors.red,
                shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(12),
                ),
                textColor: Colors.white,
                child: Text('Unfocus'),
              ),
            ],
            crossAxisAlignment: CrossAxisAlignment.stretch,
          ),
        ),
      ),
    );
  

【讨论】:

以上是关于对于 TextField 小部件中的长文本,如何在未聚焦后从头开始显示文本?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Flutter TextField 小部件中垂直居中输入文本和后缀

如何在代号一中获取文本字段的长按事件

用图标替换 TextField 小部件中的遮蔽字符

提供者不更新文本小部件

在路由后,TextField单击重建/重新加载小部件

Flutter 中的文本字段验证