gpt4 book ai didi

Flutter:如何在文本字段文本中间插入文本

转载 作者:行者123 更新时间:2023-12-03 02:42:17 27 4
gpt4 key购买 nike

我有一个 flutter 的文本字段和一个表情符号选择器按钮。在选择表情符号时,我需要将其插入当前光标位置。
我怎样才能做到这一点?
当前使用 TextEditingController我只能附加表情符号。我无法获得当前的光标偏移量。

emojiPicker() {
return EmojiPicker(
rows: 3,
columns: 7,
recommendKeywords: null,
indicatorColor: flujoAccentColor,
onEmojiSelected: (emoji, category) {
print(emoji);
_messageInputController.text =
_messageInputController.text + emoji.emoji;
}
);
}

最佳答案

  • 使用 _txtController.selection获取选择(或光标位置)。
  • 用选定的表情符号替换选择。
  • 然后固定 Controller 的选择(或光标位置)
  • import 'package:emoji_picker/emoji_picker.dart';
    import 'package:flutter/material.dart';

    void main() {
    runApp(MaterialApp(home: HomePage()));
    }

    class HomePage extends StatefulWidget {
    @override
    _HomePageState createState() => _HomePageState();
    }

    class _HomePageState extends State<HomePage> {
    TextEditingController _messageInputController;

    @override
    void initState() {
    _messageInputController = TextEditingController();
    super.initState();
    }

    @override
    Widget build(BuildContext context) {
    return Scaffold(
    appBar: AppBar(
    title: Text("Demo"),
    ),
    body: SafeArea(
    child: Column(
    children: <Widget>[
    EmojiPicker(
    rows: 3,
    columns: 7,
    recommendKeywords: null,
    indicatorColor: Colors.red,
    onEmojiSelected: (emoji, category) {
    String text = _messageInputController.text;
    TextSelection textSelection = _messageInputController.selection;
    String newText = text.replaceRange(
    textSelection.start, textSelection.end, emoji.emoji);
    final emojiLength = emoji.emoji.length;
    _messageInputController.text = newText;
    _messageInputController.selection = textSelection.copyWith(
    baseOffset: textSelection.start + emojiLength,
    extentOffset: textSelection.start + emojiLength,
    );
    },
    ),
    TextField(
    controller: _messageInputController,
    ),
    ],
    ),
    ),
    );
    }
    }

    有了这个,你不仅可以在光标位置插入选定的表情符号,还可以替换一些选定的文本

    关于Flutter:如何在文本字段文本中间插入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60057840/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com