native_virtual_keyboard

An almost pixel perfect Flutter replica of iOS and Android native keyboards.

Showcase

The original iOS 26 (Liquid Glass) keyboard on the left, the Flutter replica is on the right.

iOS 26 Showcase

Features

  • Native Appearance: Ships with pixel-perfect designs for:
    • Android
    • iOS 18 (Classic)
    • iOS 26 (Liquid Glass)
  • Automatic Detection: Automatically selects the correct keyboard style based on the platform.
  • Theming API: Powerful theming system to customize colors, shadows, and fonts.
  • Native Behavior: Key tap animations, overlays, and sound effects matching native behavior.

Usage

Basic

The widget automatically detects the platform and renders the appropriate native keyboard.

VirtualKeyboard(
  controller: VirtualKeyboardController(
    layout: EnglishQwertyKeyboardLayout(),
    onKeyPress: (key) {
      // Handle key press
    },
  ),
),

Custom Theme

You can fully customize the keyboard appearance using KeyboardTheme.

VirtualKeyboard(
  // Use a pre-built native theme
  theme: KeyboardTheme.androidDark(), 
  
  controller: ...,
),

Or create a completely custom theme:

VirtualKeyboard(
  theme: KeyboardTheme(
    backgroundColor: Color(0xFF1E3167),
    keyTheme: KeyboardKeyTheme(
      backgroundColor: Color(0xFF526087),
      pressedBackgroundColor: Color(0xFF4164C8),
      foregroundColor: Colors.white,
      shadows: [
        BoxShadow(offset: Offset(0, 1), color: Colors.black26),
      ],
    ),
    specialKeyTheme: KeyboardSpecialKeyTheme(
      backgroundColor: Color(0xFF4164C8),
      // ... special key properties
    ),
  ),
  controller: ...,
),

Getting Started

Please see the example project for a complete implementation. This plugin has no native dependencies and can be used on any platform.

Author

This plugin is developed by Chunky Tofu Studios.

You can support us by checking out our apps!

For commercial support please reach out to hello@chunkytofustudios.com.

Libraries

gen/assets.gen
GENERATED CODE - DO NOT MODIFY BY HAND
native_virtual_keyboard