emoji_picker_flutter 2.0.0-dev.3 emoji_picker_flutter: ^2.0.0-dev.3 copied to clipboard
A Flutter package that provides an Emoji picker widget with 1500+ emojis in 8 categories.
import 'package:emoji_picker_flutter/emoji_picker_flutter.dart';
import 'package:flutter/foundation.dart' as foundation;
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
/// Example for EmojiPicker
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
MyAppState createState() => MyAppState();
}
class MyAppState extends State<MyApp> {
final _controller = TextEditingController();
final _scrollController = ScrollController();
bool _emojiShowing = false;
_onBackspacePressed() {
_controller
..text = _controller.text.characters.toString()
..selection = TextSelection.fromPosition(
TextPosition(offset: _controller.text.length));
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
title: const Text('Emoji Picker Example App'),
),
body: SafeArea(
child: Column(
children: [
Expanded(
child: Center(
child: ValueListenableBuilder(
valueListenable: _controller,
builder: (context, text, child) {
return Text(
_controller.text,
);
},
),
),
),
Container(
height: 66.0,
color: Colors.blue,
child: Row(
children: [
Material(
color: Colors.transparent,
child: IconButton(
onPressed: () {
setState(() {
_emojiShowing = !_emojiShowing;
});
},
icon: const Icon(
Icons.emoji_emotions,
color: Colors.white,
),
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: TextField(
controller: _controller,
scrollController: _scrollController,
style: const TextStyle(
fontSize: 20.0,
color: Colors.black87,
),
maxLines: 1,
decoration: InputDecoration(
hintText: 'Type a message',
filled: true,
fillColor: Colors.white,
contentPadding: const EdgeInsets.only(
left: 16.0,
bottom: 8.0,
top: 8.0,
right: 16.0,
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(50.0),
),
)),
),
),
Material(
color: Colors.transparent,
child: IconButton(
onPressed: () {
// send message
},
icon: const Icon(
Icons.send,
color: Colors.white,
)),
)
],
)),
Offstage(
offstage: !_emojiShowing,
child: EmojiPicker(
textEditingController: _controller,
scrollController: _scrollController,
onBackspacePressed: _onBackspacePressed,
config: Config(
height: 256,
checkPlatformCompatibility: true,
emojiViewConfig: EmojiViewConfig(
// Issue: https://github.com/flutter/flutter/issues/28894
emojiSizeMax: 28 *
(foundation.defaultTargetPlatform ==
TargetPlatform.iOS
? 1.30
: 1.0),
),
swapCategoryAndBottomBar: false,
skinToneConfig: const SkinToneConfig(),
categoryViewConfig: const CategoryViewConfig(),
bottomActionBarConfig: const BottomActionBarConfig(),
searchViewConfig: const SearchViewConfig(),
),
),
),
],
),
),
),
);
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
}