我有一个TextField将其textDirection设置为rtl(从右到左)。当我选择 时TextField,我希望光标像往常一样转到末尾,但光标转到末尾之前的一个位置。

TextField(
textDirection: TextDirection.rtl,
controller: widget.controller,
decoration: InputDecoration(
contentPadding: EdgeInsets.all(8),
isDense: true,
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
width: 2,
color: Theme.of(context).primaryColor,
),
borderRadius: BorderRadius.circular(8),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
width: 1.7,
color: Colors.grey.withOpacity(0.3),
),
borderRadius: BorderRadius.circular(8),
),
),
),
);
Run Code Online (Sandbox Code Playgroud)
如何让光标出现在末尾?
更新:我意识到在中指定控制器会导致TextField问题出现。但在这种情况下我需要控制器。
小智 19
我认为这是因为每个阿拉伯字符都编码为 2 到 4 个字节。
这段代码无论如何都能达到目的
TextField(
onTap: (){
if(controller.selection == TextSelection.fromPosition(TextPosition(offset: controller.text.length -1))){
setState(() {
controller.selection = TextSelection.fromPosition(TextPosition(offset: controller.text.length));
});
}
},
controller: controller,
...
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5553 次 |
| 最近记录: |