【问题标题】:Detect new line in TextFormField - Flutter在 TextFormField 中检测新行 - Flutter
【发布时间】:2021-08-15 14:15:59
【问题描述】:

我有一个Card 小部件,小时候有TextFormField。每次用户进入新行时,我都想增加卡片的高度。卡片包裹在Container 中,我有一个高度变量来确定高度。

如何检测TextFormField 中的新行?每当文本换行到下一行时也是如此。

【问题讨论】:

标签: android flutter newline


【解决方案1】:

我认为您需要创建一个函数来检查 TextFormField 特定行。

我认为这对你有用“https://stackoverflow.com/questions/45900387/multi-line-textfield-in-flutter”

【讨论】:

    【解决方案2】:

    在不按回车的情况下更新高度:

    onChanged: (String e) {
        int sizeIncreaseConstant = 30; //the fontSize 20 + buffer
        int widthOfCharacter = 17; // 85% of fontsize
        int newNumLines = ((e.length * widthOfCharacter)/widthOfContainer).truncate();
        if( newNumLines != numLines) {
            setState(() {
                if(newNumLines > numLines) 
                    heightOfContainer = heightOfContainer + sizeIncreaseConstant;
                else
                    heightOfContainer = heightOfContainer - sizeIncreaseConstant;
                numLines = newNumLines;
            });
        }
    },
    

    初始值:

    int numLines = 0;
    double widthOfContainer = 120;
    double heightOfContainer = 50;
    //fontSize = 20;
    

    为此,您必须为所有字符使用宽度相等的字体,例如 Monospace。您还需要根据 fontSize 确定字符的宽度。它应该是字体大小的 50-60%,但 85% 对我有用。

    【讨论】:

    • 我还想检测文本何时换行到下一行而不按回车。
    猜你喜欢
    • 2019-03-18
    • 1970-01-01
    • 2020-10-27
    • 2019-09-18
    • 2021-10-05
    • 2022-10-18
    • 1970-01-01
    • 2019-01-25
    • 2021-05-20
    相关资源
    最近更新 更多