STM32代码的问题讨论(一)

【解决方案1】:

您可以使用 TextSelection 控制光标位置。

我没有测试阿拉伯语环境,但试试这个。

偏移值表示光标的位置,所以测试0或(widget.controller.text.length)

   TextField(
        textDirection: TextDirection.rtl,
        controller: widget.controller
                    ..selection = TextSelection.fromPosition(TextPosition(offset: 0)),
        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),
          ),
        ),
      ),
    );

【问题讨论】:

【解决方案2】:

您可以尝试此操作将光标移动到文本的末尾。然后把这个控制器放在TextField中的控制器中。:

late TextEditingController _textEditingController;
@override
  void initState() {
    _textEditingController = TextEditingController(text: widget.text);
    _textEditingController.selection = TextSelection.fromPosition(
        TextPosition(offset: _textEditingController.text.length));
    super.initState();
  }

【问题讨论】:

【解决方案3】:

我认为这是因为每个阿拉伯字符被编码为 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,
     ...
);

【问题讨论】:

© 版权声明
THE END
喜欢就支持一下吧
点赞151赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容