tappy_keyboard 3.3.0 copy "tappy_keyboard: ^3.3.0" to clipboard
tappy_keyboard: ^3.3.0 copied to clipboard

An embedded, customizable virtual keyboard plugin for Flutter apps with theming, custom layouts, and hotkey support.

Tappy Keyboard #

A powerful and customizable embedded keyboard solution for Flutter applications, offering flexible layouts, theming, and hotkey support.

Table of Contents #

Features #

  • 🎹 Customizable layouts
  • 🔤 Multiple input types (numeric, alphanumeric)
  • 🎨 Theming options with customizable colors and styles
  • 📱 Responsive design for all screen sizes
  • 🔄 Easy integration with existing Flutter apps
  • 🎯 Animations & transitions
  • 🔒 Secure input handling

[Tappy Keyboard in action]

[Tappy Keyboard in action]

Installation #

Add the package to your pubspec.yaml:

flutter pub add tappy_keyboard

Usage #

Here's a simple example of how to use the embedded keyboard:

import 'package:tappy_keyboard/tappy_keyboard.dart';

final controller = TappyKeyboardController();

TappyKeyboard(
    controller: controller,
    type: TappyKeyboardType.numeric,
    showOnFocus: false,
);

Register hotkeys by providing modifier keys and a callback:

Note:

Hotkeys only work when the on-screen keyboard has focus. If it loses focus (e.g., due to a touch or mouse interaction elsewhere), hotkey input will not be detected—even if the correct keys are pressed. You’ll need to refocus the keyboard and retype the hotkey, regardless of key order. This happens because the system only processes key events when the input widget is actively focused.

controller.addHotKey(
  TappyKeyboardHotKey(
    modifiers: [
      TappyKeyboardKeyData(keyAction: TappyKeyAction.ctl),
      TappyKeyboardKeyData(keyAction: TappyKeyAction.alt),
      TappyKeyboardKeyData(keyAction: TappyKeyAction.letter, text: 'q'),
    ],
    callback: () {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text("Hi Ctrl + Shift + A!"),
        ),
      );
    },
  ),
);
TappyKeyboard(
  controller: controller,
  type: TappyKeyboardType.alphanumeric,
  showAtSymbol: false,
  tabSpaceSize: 4,
  onTap: (key) {},
  child: Padding(
    padding: const EdgeInsets.all(40.0),
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      crossAxisAlignment: CrossAxisAlignment.center,
      children: [
        for (int i = 1; i <= 15; i++)
          TextField(
            decoration: InputDecoration(
              label: Text("Input Field $i"),
            ),
          ),
      ],
    ),
  ),
);

Dispose the controller to free resources and prevent memory leaks

controller.dispose();

For more advanced usage and customization options, check out the example app in the /example directory.

Customization #

The keyboard can be customized in various ways:

TappyKeyboard(
  controller: TappyKeyboardController(),
  theme: TappyKeyboardTheme(
    backgroundColor: Colors.transparent,
  ),
  type: TappyKeyboardType.numeric,
  onTap: (key){},
)

Example #

Explore a full demo in the example folder.

Contributing #

We welcome contributions! Please open an issue or submit a Pull Request for any improvements or bug fixes.

License #

This project is licensed under the MIT License. See the LICENSE file for details.

1
likes
140
points
110
downloads

Publisher

unverified uploader

Weekly Downloads

An embedded, customizable virtual keyboard plugin for Flutter apps with theming, custom layouts, and hotkey support.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

auto_size_text, flutter, provider

More

Packages that depend on tappy_keyboard