PlatformText.rich constructor

const PlatformText.rich(
  1. TextSpan textSpan, {
  2. Key? key,
  3. FocusNode? focusNode,
  4. TextStyle? style,
  5. StrutStyle? strutStyle,
  6. TextAlign? textAlign,
  7. TextDirection? textDirection,
  8. double? textScaleFactor,
  9. bool showCursor = false,
  10. bool autofocus = false,
  11. ToolbarOptions? toolbarOptions,
  12. int? minLines,
  13. int? maxLines,
  14. double cursorWidth = 2.0,
  15. double? cursorHeight,
  16. Radius? cursorRadius,
  17. Color? cursorColor,
  18. BoxHeightStyle selectionHeightStyle = ui.BoxHeightStyle.tight,
  19. BoxWidthStyle selectionWidthStyle = ui.BoxWidthStyle.tight,
  20. DragStartBehavior dragStartBehavior = DragStartBehavior.start,
  21. bool enableInteractiveSelection = true,
  22. TextSelectionControls? selectionControls,
  23. GestureTapCallback? onTap,
  24. ScrollPhysics? scrollPhysics,
  25. String? semanticsLabel,
  26. TextHeightBehavior? textHeightBehavior,
  27. TextWidthBasis? textWidthBasis,
  28. SelectionChangedCallback? onSelectionChanged,
  29. Locale? locale,
  30. bool? softWrap,
  31. TextOverflow? overflow,
  32. @visibleForTesting bool webTest = false,
})

Creates a platform text widget with a InlineSpan.

Features

PlatformText returns Text or SelectableText widget depending on the platform it's running on.

Native → Text

Web → SelectableText

Usage

{@tool snippet}

Create a PlatformText widget with the InlineSpan.

PlatformText.rich(
  TextSpan(
    text: 'Hello',
    children: <TextSpan>[
      TextSpan(
        text: ' beautiful ',
        style: TextStyle(fontStyle: FontStyle.italic),
      ),
      TextSpan(
        text: 'mom!',
        style: TextStyle(fontWeight: FontWeight.bold),
      ),
    ],
  ),
);

{@end-tool}

Implementation

const PlatformText.rich(
  TextSpan this.textSpan, {
  Key? key,
  this.focusNode,
  this.style,
  this.strutStyle,
  this.textAlign,
  this.textDirection,
  this.textScaleFactor,
  this.showCursor = false,
  this.autofocus = false,
  ToolbarOptions? toolbarOptions,
  this.minLines,
  this.maxLines,
  this.cursorWidth = 2.0,
  this.cursorHeight,
  this.cursorRadius,
  this.cursorColor,
  this.selectionHeightStyle = ui.BoxHeightStyle.tight,
  this.selectionWidthStyle = ui.BoxWidthStyle.tight,
  this.dragStartBehavior = DragStartBehavior.start,
  this.enableInteractiveSelection = true,
  this.selectionControls,
  this.onTap,
  this.scrollPhysics,
  this.semanticsLabel,
  this.textHeightBehavior,
  this.textWidthBasis,
  this.onSelectionChanged,
  this.locale,
  this.softWrap,
  this.overflow,
  @visibleForTesting this.webTest = false,
})  : assert(maxLines == null || maxLines > 0),
      assert(minLines == null || minLines > 0),
      assert(
        (maxLines == null) || (minLines == null) || (maxLines >= minLines),
        "minLines can't be greater than maxLines",
      ),
      data = null,
      toolbarOptions = toolbarOptions ??
          const ToolbarOptions(
            selectAll: true,
            copy: true,
          ),
      super(key: key);