Decoration
Keyboards
LiqKeyboard renders an iOS 26 keyboard surface: a 402×874 rounded-rect
light surface with an autocomplete suggestions strip, a key-flow area of
30×40 white pills, and a bottom toolbar with emoji, space bar, and mic glyphs.
Pass custom keyRows to swap out the QWERTY layout for any other arrangement.
| Parameter | Description |
|---|---|
suggestions | List of up to three suggestion strings (default QWERTY suggestions) |
keyRows | List of key-label rows (default liqKeyboardQwertyRows) |
width | Outer width in logical pixels (default 402) |
minHeight | Minimum height in logical pixels (default 874) |
Qwerty
// ignore_for_file: file_names // hyphenated name required by snippet manifest conventionimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/liqkit_ui.dart';/// Snippet builder consumed by `apps/docs_snippets/lib/src/routes.g.dart`.Widget keyboardQwertyBuilder(BuildContext context) { return SnippetFrame( maxWidth: 360, child: LayoutBuilder( builder: (context, constraints) => LiqKeyboard(width: constraints.maxWidth, minHeight: 320), ), );}
Numbers
// ignore_for_file: file_names // hyphenated name required by snippet manifest conventionimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/liqkit_ui.dart';/// Snippet builder consumed by `apps/docs_snippets/lib/src/routes.g.dart`.Widget keyboardNumbersBuilder(BuildContext context) { return SnippetFrame( maxWidth: 360, child: LayoutBuilder( builder: (context, constraints) => LiqKeyboard( width: constraints.maxWidth, minHeight: 320, suggestions: const <String>['1', '2', '3'], keyRows: const <List<String>>[ <String>['1', '2', '3'], <String>['4', '5', '6'], <String>['7', '8', '9'], <String>['0'], ], ), ), );}
Live Suggestions
// ignore_for_file: file_namesimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/examples.dart';Widget keyboardLiveSuggestionsBuilder(BuildContext context) { return const SnippetFrame(child: KeyboardLiveSuggestionsExample());}
Alphabetic
// ignore_for_file: file_namesimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/examples.dart';Widget keyboardAlphabeticBuilder(BuildContext context) { return const SnippetFrame(child: KeyboardAlphabeticExample());}
Numeric
// ignore_for_file: file_namesimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/examples.dart';Widget keyboardNumericBuilder(BuildContext context) { return const SnippetFrame(child: KeyboardNumericExample());}
Decimal
// ignore_for_file: file_namesimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/examples.dart';Widget keyboardDecimalBuilder(BuildContext context) { return const SnippetFrame(child: KeyboardDecimalExample());}
Phone
// ignore_for_file: file_namesimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/examples.dart';Widget keyboardPhoneBuilder(BuildContext context) { return const SnippetFrame(child: KeyboardPhoneExample());}
// ignore_for_file: file_namesimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/examples.dart';Widget keyboardEmailBuilder(BuildContext context) { return const SnippetFrame(child: KeyboardEmailExample());}
Url
// ignore_for_file: file_namesimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/examples.dart';Widget keyboardUrlBuilder(BuildContext context) { return const SnippetFrame(child: KeyboardUrlExample());}
Emoji
// ignore_for_file: file_namesimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/examples.dart';Widget keyboardEmojiBuilder(BuildContext context) { return const SnippetFrame(child: KeyboardEmojiExample());}
Light
// ignore_for_file: file_namesimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/examples.dart';Widget keyboardLightBuilder(BuildContext context) { return const SnippetFrame(child: KeyboardLightAppearanceExample());}
Dark
// ignore_for_file: file_namesimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/examples.dart';Widget keyboardDarkBuilder(BuildContext context) { return const SnippetFrame(child: KeyboardDarkAppearanceExample());}
Auto
// ignore_for_file: file_namesimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/examples.dart';Widget keyboardAutoBuilder(BuildContext context) { return const SnippetFrame(child: KeyboardAutoAppearanceExample());}
No Predictions
// ignore_for_file: file_namesimport 'package:docs_snippets/src/snippet_frame.dart';import 'package:flutter/widgets.dart';import 'package:liqkit_ui/examples.dart';Widget keyboardNoPredictionsBuilder(BuildContext context) { return const SnippetFrame(child: KeyboardNoPredictionsExample());}