You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter中让文本选择指针悬浮显示在键盘上方

你当前的实现不生效的核心原因是给TextField外层套了Expanded组件,Expanded会强制子组件填充满父布局分配的所有剩余空间,导致TextField无法根据输入内容自适应调整高度,才和原生Android的表现不一致。

修正方案

将外层的Expanded替换为Flexible,并设置fit: FlexFit.loose,即可实现和原生一致的效果:输入框高度随输入内容从1行逐步增加到6行,超出6行后内容滚动,不会强制撑满父布局的纵向空间。

修正后的代码如下:

Flexible(
  fit: FlexFit.loose,
  child: Scrollbar(
    child: TextField(
      decoration: const InputDecoration(
        enabledBorder: InputBorder.none,
        focusedBorder: InputBorder.none,
        hintText: 'Write a message...',
      ),
      maxLines: 6,
      keyboardType: TextInputType.multiline,
      textInputAction: TextInputAction.newline,
      minLines: 1,
    ),
  ),
)

补充说明

如果你的输入框是放在横向布局中(比如聊天页的底部输入栏,左侧带表情按钮、右侧带发送按钮的场景),Flexible会自动占用横向的剩余可用空间,同时不会限制子组件的纵向高度,完全符合需求。

内容的提问来源于stack exchange,提问作者Fajra Risqulla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:45:08