搜索分类、插件与代码仓

mentionable_text_field 封面
插件详情v0.0.2

mentionable_text_field

一个 Flutter 插件,用于创建可自定义的文本字段,具备提及功能。匹配用户的显示和选择方式与 Widget 本身解耦,因此您可以自由选择实现方式。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
267
喜欢数
35
Pub 分数
130

安装插件

flutter pub add mentionable_text_field

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个可定制的Flutter文本字段插件,支持提及功能,允许用户在文本中标记他人。它将匹配和显示提及的逻辑与UI分离,提供灵活的建议展示和选择方式。适用于聊天或社交应用,支持Android、iOS、Web、macOS、Windows和Linux等多个平台。该插件专为希望完全控制提及体验但又不被特定UI组件束缚的开发者设计。

适合场景

  • 聊天应用
  • 社交媒体平台
  • 协作编辑工具
  • 评论中的用户标记
  • 实时消息接口
  • 提及内容创作

主要特点

  • 解耦的提及显示与选择
  • 可自定义的建议UI
  • 跨平台支持
  • 可扩展的匹配逻辑
  • 可配置的触发字符
  • 集成友好设计

适合对象

  • 开发人员构建富文本输入
  • 需要用户标记的应用
  • 需要灵活提及系统的团队
  • 具有自定义UI需求的项目
  • Flutter 应用针对多个平台

使用建议

  • 需要自定义实现以渲染建议
  • 可能需要额外的状态管理
  • 不适合简单的文本输入
  • 依赖外部逻辑进行用户匹配
  • 有限的内置样式选项
  • 需要仔细处理文本光标和选择

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

mentionable_text_field

A flutter plugin to create customizable text field that has a mentionable feature.

Installing:

In your pubspec.yaml

dependencies:
  mentionable_text_field: ^0.0.2
import 'package:mentionable_text_field/mentionable_text_field.dart';


Basic Usage:

    class _MyHomePageState extends State<MyHomePage> {
  List<Mentionable> _mentionableUsers = [];
  late void Function(Mentionable mentionable) _onSelectMention;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: SafeArea(
        child: Stack(
          children: [
            Positioned(
              bottom: 0,
              width: MediaQuery.of(context).size.width,
              height: 200,
              child: Column(
                children: [
                  MentionableTextField(
                    onControllerReady: (value) =>
                    _onSelectMention = value.pickMentionable,
                    maxLines: 1,
                    onSubmitted: print,
                    mentionables: const [
                      MyUser('John Doe'),
                      MyUser('Jeanne Aulas'),
                      MyUser('Alexandre Dumas')
                    ],
                    onMentionablesChanged: (mentionableUsers) =>
                        setState(() => _mentionableUsers = mentionableUsers),
                    decoration:
                    const InputDecoration(hintText: 'Type something ...'),
                  ),
                  Expanded(
                    child: ListView.builder(
                      itemBuilder: (context, index) {
                        final mentionable = _mentionableUsers[index];
                        return ListTile(
                          leading: const Icon(Icons.person),
                          title: Text(mentionable.label),
                          onTap: () => _onSelectMention(mentionable),
                        );
                      },
                      itemCount: _mentionableUsers.length,
                    ),
                  )
                ],
              ),
            )
          ],
        ),
      ),
    );
  }
}



Custom usage

In addition to basic textField's attributes, There are other options:\

Properties Description
ValueChanged<MentionTextEditingController>? onControllerReady A callback to retrieve the TextField controller when ready
List<Mentionable> mentionables List of possible Mentionable objects, eg: users.
String escapingMentionCharacter The character used to replace mention. It should not be used by the user to avoid issues. It should be a single character.
MentionablesChangedCallback onMentionablesChanged Callback that is called on each new characters typed in TextField. It gives the current candidates to mention feature.
TextStyle mentionStyle Text Style applied to mentions

Additional information

Don't hesitate to suggest any features or fix that will improve the package!

所属分类

源码仓库

使用此插件的项目

暂无相关数据。