Saltar al contenido
menumenu tanreiexpand_morecontrasttranslate
tanreiexpand_more
Primeros pasosWebReactSwiftUIJetpack ComposeFlutterReact NativePreajustesTu propio sistema de diseñoUsar Tanrei con agentes de IAMarcaTokens de diseñoSistemas de diseño y personalizaciónTheme StudioColorTipografíaIconosFormaElevaciónMovimientoEstados de interacciónComportamientoDiseño de páginaAccesibilidadTextosTokens de colorTokens de la escala tipográficaTokens de formaTokens de elevaciónTokens de movimientoTokens de estadoTokens de espacio y de medidaComponentesBotónBotón de acción principalBotón segmentadoGrupo de botonesBotón con menúBarra de herramientasBotón de copiarCasilla de verificaciónBotón de opciónInterruptorChipMenúControl deslizanteCampo de control deslizanteCalendarioDateTimePickerGrupo de camposGrupo de botones de opciónGrupo de casillas de verificaciónSelectCampo de selecciónBarra de menúsSubida de archivosSelector de archivos AvanzadoZona de soltar archivosEntrada de texto AvanzadoCampo de textoCampo de chipsCampoCuadro combinado AvanzadoCampo de cuadro combinadoEntrada numérica AvanzadoCampo numéricoEntrada de color AvanzadoCampo de colorEntrada de código de un solo uso AvanzadoCampo de código de un solo usoEntrada de texto incrustada AvanzadoCuadro de redacción de chatTarjetaDivisorCapa modal AvanzadoDiálogoListaFila de listaHoja inferiorHoja lateralCarruselBloque de códigoTablaPopoverPasosAcordeónLista de descripcionesFiguraEstructura de la aplicaciónCabecera de páginaVista de árbolLínea de tiempoVista previa de imágenesTirador de tamañoMarco redimensionableÁrea de desplazamientoInsigniaIndicador de progresoMedidorContador animadoIndicador de cargaSnackbarTooltipAtajo de tecladoTagCódigo en líneaCalloutAvatarEstado vacíoGrupo de tagsEsqueletoElemento de archivoMuestraTexto en marquesinaPestañasVista de pestañasBarra de la aplicaciónBarra de navegaciónPanel de navegaciónBúsquedaEnlacePaginaciónEnlaces anterior y siguienteIndicador de pasosRuta de navegaciónTabla de contenidoTarjeta de enlaceMenú FABEstadoCómo se construye TanreiCómo contribuirLicencia y atribución
InicioPrimeros pasosFlutter

Flutter

Añade Tanrei a una aplicación de Flutter.

content_copyVer en Markdown

El paquete tanrei está escrito solo en Dart. Proporciona widgets, un TanreiTheme heredado y constantes de tokens generadas, y no depende de MaterialApp ni de CupertinoApp: funciona dentro de cualquiera de las dos, o en una WidgetsApp sin más.

Aún no publicado

tanrei todavía no está en pub.dev. Una plataforma se publica cuando se ha puesto al día con las especificaciones actuales, y hasta entonces la CI de Flutter está en pausa. «Desde el código fuente», más abajo, muestra cómo se añade el paquete desde chnotchy/tanrei; «Cuando se publique» muestra cómo se instalará entonces.

Instalación

Desde el código fuente

Hoy no se compila

El paquete de Flutter todavía no se ha puesto al día con las especificaciones y los tokens actuales: su código fuente se escribió para una versión anterior del código de tokens generado y no compila con el de hoy. Su CI está en pausa hasta que se ponga al día, y la página de estado marca sus componentes como rezagados. Los pasos siguientes muestran cómo se añade a una aplicación; funcionarán cuando el paquete se haya puesto al día.

Clona el repositorio junto a tu aplicación y declara la dependencia del paquete por su ruta:

flutter pub add "tanrei:{path: ../tanrei/packages/flutter}"

flutter pub add "tanrei:{git: {url: https://github.com/chnotchy/tanrei, path: packages/flutter}}" sigue al repositorio en lugar de a un clon local.

Cuando se publique

flutter pub add tanrei

Uso

import 'package:flutter/widgets.dart';
import 'package:tanrei/tanrei.dart';

class DeployButton extends StatelessWidget {
  const DeployButton({super.key, required this.isDeploying, required this.onDeploy});

  final bool isDeploying;
  final VoidCallback onDeploy;

  @override
  Widget build(BuildContext context) {
    return TanreiTheme(
      data: TanreiThemeData.platform(context),
      child: TanreiButton(
        variant: TanreiButtonVariant.filled,
        onPressed: isDeploying ? null : onDeploy,
        child: const Text('Desplegar'),
      ),
    );
  }
}

No hay un indicador disabled. Como en los botones del propio Flutter, pasar null en onPressed deshabilita el botón.

Tema y contraste

TanreiThemeData.platform(context) lee de MediaQuery el brillo y el indicador de contraste alto. Para fijarlos, parte de una constante y cópiala:

TanreiTheme(
  data: TanreiThemeData.dark.copyWith(contrast: TanreiContrast.high),
  child: const App(),
)

Coloca TanreiTheme por encima de tu navegador para que todas las rutas lo vean.

Estilos de texto

TanreiTheme.of(context).system.typescale contiene los dieciséis estilos de texto por nivel (heading2 para el título de una sección, body para el texto corrido, label para un control) como tokens TanreiTextStyle; theme.textStyle(system.typescale.heading2) (o token.toTextStyle()) convierte uno en un TextStyle de Flutter. theme.textStyle(token, emphasized: true) (a mano, token.emphasized(system.typescale.emphasis)) es el mismo estilo con su peso más el paso de énfasis de la familia (typescale.emphasis); el énfasis es un peso, no otro rol. Consulta Tipografía para ver los roles y su correspondencia con los elementos.