Flutter表情选择器插件flutter_emoji_picker的使用

Flutter表情选择器插件flutter_emoji_picker的使用

Flutter Emoji picker 使得在不同平台上轻松选择表情符号变得更加简单。

表情底部弹出框选择器预览 表情对话框选择器预览

使用

导入包

import 'package:flutter_emoji_picker/flutter_emoji_picker.dart';

包装你的MaterialApp以使用EmojiProvider

EmojiProvider(
  child: MaterialApp(
    title: 'Flutter Demo',
    home: Scaffold(
      body: ...yourcode 
    ),
  ),
);

示例

我们可以使用三种方式来选择或显示表情选择器:

对话框选项

EmojiButton(
  emojiPickerViewConfiguration: EmojiPickerViewConfiguration(
    viewType: ViewType.dialog,
    onEmojiSelected: (String emoji) {
      print('表情选择: $emoji');
    },
  ),
  child: const Text('点击我'),
),

底部弹出框选项

EmojiButton(
  emojiPickerViewConfiguration: EmojiPickerViewConfiguration(
    viewType: ViewType.bottomsheet,
    onEmojiSelected: (String emoji) {
      print('表情选择: $emoji');
    },
  ),
  child: const Text('点击我'),
),

屏幕选项

此选项为选择表情符号提供了全屏界面。

IconButton(
  onPressed: () {
    Navigator.push(
        context,
        MaterialPageRoute(
            builder: (ctx) {
                return EmojiListView(
                    currentHoveredEmoji: ValueNotifier(''), // 可选,仅在非移动平台使用
                    contentPadding: const EdgeInsets.only(left: 20, right: 40),
                    appBar: SliverAppBar(
                      leading: IconButton(
                        icon: const Icon(Icons.arrow_back),
                        onPressed: () {
                          Navigator.pop(ctx);
                        },
                      ),
                    ),
                    configuration: EmojiListViewConfiguration(onEmojiSelected: (String emoji) {
                        print('表情选择: $emoji');
                    }),
                    searchBarConfiguration: EmojiPickerSearchFieldConfiguration(showField: false),
                );
            },
        ),
    );
  },
  icon: const Text('😀'),
)

社区支持

如果您有任何建议或问题,请随时在此处提交一个 issue。

如果您希望贡献,请随时创建一个 PR。


以下是一个完整的示例代码,展示了如何在应用中集成表情选择器。

完整示例代码

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_emoji_picker/flutter_emoji_picker.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // 这个小部件是你的应用的根节点。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return const EmojiProvider(
      child: MaterialApp(
        title: 'Flutter Demo',
        themeMode: ThemeMode.dark,
        home: MyHomePage(title: '表情选择器'),
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final ValueNotifier<String?> _currentHoverNotifier = ValueNotifier('');

  [@override](/user/override)
  void dispose() {
    _currentHoverNotifier.dispose();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: SingleChildScrollView(
        child: Column(
          children: <Widget>[
            Row(
              children: [
                Container(
                  alignment: Alignment.center,
                  child: EmojiButton(
                    emojiPickerViewConfiguration: EmojiPickerViewConfiguration(
                      viewType: ViewType.bottomsheet,
                      onEmojiSelected: (emoji) {},
                    ),
                    child: const Icon(
                      CupertinoIcons.arrow_down,
                    ),
                  ),
                ),
                const SizedBox(width: 10),
                Container(
                  alignment: Alignment.center,
                  child: EmojiButton(
                    emojiPickerViewConfiguration: EmojiPickerViewConfiguration(
                      viewType: ViewType.dialog,
                      onEmojiSelected: (emoji) {},
                    ),
                    child: const Icon(
                      Icons.emoji_flags,
                    ),
                  ),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter表情选择器插件flutter_emoji_picker的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter表情选择器插件flutter_emoji_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_emoji_picker 是一个用于在 Flutter 应用中集成表情选择器的插件。它允许用户从表情库中选择表情,并可以轻松地将选中的表情插入到文本中。以下是如何使用 flutter_emoji_picker 的步骤:

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 flutter_emoji_picker 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_emoji_picker: ^0.1.0  # 请检查最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 flutter_emoji_picker 包:

import 'package:flutter_emoji_picker/flutter_emoji_picker.dart';

3. 使用 EmojiPicker

你可以使用 EmojiPicker 小部件来显示表情选择器。以下是一个简单的示例,展示如何在点击按钮时显示表情选择器,并将选中的表情插入到文本字段中。

import 'package:flutter/material.dart';
import 'package:flutter_emoji_picker/flutter_emoji_picker.dart';

class EmojiPickerExample extends StatefulWidget {
  @override
  _EmojiPickerExampleState createState() => _EmojiPickerExampleState();
}

class _EmojiPickerExampleState extends State<EmojiPickerExample> {
  TextEditingController _controller = TextEditingController();
  bool _showEmojiPicker = false;

  void _onEmojiSelected(Emoji emoji) {
    _controller.text = _controller.text + emoji.emoji;
  }

  void _toggleEmojiPicker() {
    setState(() {
      _showEmojiPicker = !_showEmojiPicker;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Emoji Picker Example'),
      ),
      body: Column(
        children: [
          Expanded(
            child: Padding(
              padding: const EdgeInsets.all(8.0),
              child: TextField(
                controller: _controller,
                decoration: InputDecoration(
                  border: OutlineInputBorder(),
                  labelText: 'Enter your text',
                ),
                maxLines: null,
              ),
            ),
          ),
          if (_showEmojiPicker)
            EmojiPicker(
              onEmojiSelected: _onEmojiSelected,
            ),
        ],
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _toggleEmojiPicker,
        child: Icon(Icons.emoji_emotions),
      ),
    );
  }
}

void main() {
  runApp(MaterialApp(
    home: EmojiPickerExample(),
  ));
}

4. 运行应用

现在你可以运行你的 Flutter 应用,点击右下角的浮动按钮来显示或隐藏表情选择器。选择一个表情后,它将自动插入到文本字段中。

5. 自定义 EmojiPicker

EmojiPicker 小部件提供了一些可选的参数,允许你自定义其外观和行为。例如,你可以更改表情的行数、列数、背景颜色等。

EmojiPicker(
  onEmojiSelected: _onEmojiSelected,
  rows: 4,
  columns: 7,
  backgroundColor: Colors.grey[200],
  buttonColor: Colors.blue,
  indicatorColor: Colors.blueAccent,
);
回到顶部