formatted_text 4.0.1 formatted_text: ^4.0.1 copied to clipboard
A simple text formatting package. Use to format text in TextField and Text widgets
Introduction #
-
Formatted Text is a Text formatting package.
-
One text can be wrapped aroung with multiple patterns to apply multiple
TextStyles
merged together. ( AllTextStyles
should be able to merged together ) -
Child wrappers can be applied to substrings and they will be merged with parenet wrapper style. ( All
TextStyles
should be able to merged together ) -
This package includes,
- Text View
- Text Editing Controller
- Selection toolbar
Packages #
Getting Started #
Add as a dependency #
dependencies:
formatted_text: [latest-version]
If you are using flutter_hooks
use formatted_text_hooks
dependencies:
formatted_text_hooks: [latest-version]
Import package #
import 'package:formatted_text/formatted_text.dart';
If using formatted_text_hooks
import 'package:formatted_text_hooks/formatted_text_hooks.dart';
Usage examples #
Text View #
Bold
FormattedText('*This text is bold*');
Italic
FormattedText('_This text is Italic_');
Strikethrough (~
) and Underline (#
) are also available as default formatters
Multi styling substrings
FormattedText('_This is *Bold Italic* Italic_');
#
Text Editing Controller #
final textEditingController = FormattedTextEditingController();
or with hooks
final textEditingController = useFormattedTextController();
#
Custom Formatters #
- Providing custom formatters will override the default formatters.
FormattedText(
'==This text is orange==',
formatters: [
... FormattedTextDefaults.formattedTextDefaultFormatters, // To add default formatters
FormattedTextFormatter(
patternChars: '==', // Pattern char(s)
style: TextStyle(color: Colors.orange),
)
],
)
#
Context Menu Builder #
To get adaptive text selection toolbar with default formatter menu items,
contextMenuBuilder: (BuildContext context,
EditableTextState editableTextState) {
return FormattedTextContextMenuBuilder
.adaptiveTextSelectionToolbar(
editableTextState: editableTextState);
}
Custom Context Menu Builder Items #
- Providing custom menu items will override the default formatter items.
- Don't escape
patternChars
.
contextMenuBuilder: (BuildContext context,
EditableTextState editableTextState) {
return FormattedTextContextMenuBuilder
.adaptiveTextSelectionToolbar(
editableTextState: editableTextState,
items: [
...FormattedTextDefaults
.formattedTextDefaultContextMenuItems, // Default formatters
const FormattedTextContextMenuItem(
label: 'Orange',
patternChars: '==',
),
],
);
},
Or
- Use context menu button items
contextMenuBuilder: (BuildContext context,
EditableTextState editableTextState) {
return AdaptiveTextSelectionToolbar.buttonItems(
anchors: editableTextState.contextMenuAnchors,
buttonItems: [
...editableTextState.contextMenuButtonItems,
...FormattedTextDefaults
.formattedTextDefaultContextMenuButtonItems(
editableTextState),
FormattedTextContextMenuBuilder
.buildContextMenuButtonItem(
editableTextState: editableTextState,
item: const FormattedTextContextMenuItem(
label: 'Orange',
patternChars: '==',
),
),
],
);
}
#
[DEPRECATED] #
Selection controls #
To display custom selection controls,
selectionControls: FormattedTextSelectionControls(),
Modify cut / copy / paste / select all action availability using Toolbar Options
toolbarOptions: ToolbarOptions(
cut: false,
copy: false,
paste: false,
selectAll: true,
)
Custom Toolbar Actions #
- Providing custom actions will override the default actions except cut / copy / paste / select all.
- Don't escape
patternChars
.
selectionControls: FormattedTextSelectionControls(
actions: [
... FormattedTextDefaults.formattedTextToolbarDefaultActions, // To add default actions
FormattedTextToolbarAction(
label: 'Orange',
patternChars: '==',
)
],
)
Note #
- All formatter patterns must be distinctive
- Child patterns which are already applied will be considered normal text
- Child styles should be able to merge with parent styles
Issues #
Please file any issues, bugs or feature requests as an issue on our GitHub page.
Author #
This Formatted Text package is developed by NirmalCode.