Saltar al contenido principal

Cliente de entrada de texto Scribble

Añadir nuevos métodos a la interfaz TextInputClient para permitir que Scribble inserte o elimine marcadores de posición de texto y muestre la barra de herramientas.

Resumen

#

Añade tres métodos, showToolbar, insertTextPlaceholder y removeTextPlaceholder a la interfaz TextInputClient para permitir que la función Scribble de iOS 14 inserte y elimine marcadores de posición de texto y muestre la barra de herramientas.

Contexto

#

A partir de iOS 14, los iPads soportan la función Scribble al usar el Apple Pencil. Esta función permite a los usuarios utilizar el lápiz para interactuar con campos de texto para añadir, eliminar, seleccionar y modificar texto.

Descripción del cambio

#

En los widgets de texto nativos, la barra de herramientas de texto se muestra cuando un usuario usa el lápiz para seleccionar texto en un iPad con iOS 14 o superior. Para replicar este comportamiento, la plataforma envía un mensaje de canal textInput llamado TextInputClient.showToolbar. Esto notifica al código de Dart que se debe mostrar la barra de herramientas.

Cuando un usuario mantiene presionado el lápiz, se muestra un espacio visual en el texto para permitir al usuario espacio adicional para escribir. Para replicar este comportamiento, la plataforma envía mensajes de canal textInput llamados TextInputClient.insertTextPlaceholder y TextInputClient.removeTextPlaceholder. Las entradas de texto multilínea deben tener marcadores de posición que proporcionen espacio vertical, mientras que las entradas de una sola línea deben proporcionar espacio horizontal.

Guía de migración

#

Si anteriormente implementaste TextEditingClient, debes sobrescribir showToolbar, insertTextPlaceholder y removeTextPlaceholder para dar soporte a estas funciones de Scribble o proporcionar una implementación vacía.

Para migrar, implementa showToolbar, insertTextPlaceholder y removeTextPlaceholder.

Código antes de la migración:

dart
class MyCustomTextInputClient implements TextInputClient {
  ...
}

Código después de la migración:

dart
class MyCustomTextInputClient implements TextInputClient {
  ...
  @override
  void showToolbar() {
    ...
  }

  @override
  void insertTextPlaceholder(Size size) {
    ...
  }

  @override
  void removeTextPlaceholder() {
    ...
  }
}

Timeline

#

Introducido en la versión: 2.9.0-1.0.pre
En el lanzamiento estable: 2.10

Referencias

#

Documentación de la API:

Issues relevantes:

PRs relevantes: