Cuando hablamos de Tipografías nos referimos precisamente al tipo y estilo de letras que usaremos en los textos de nuestra interfaz, esta característica estará determinada por las indicaciones que nos haya suministrado nuestro equipo de diseño.
Un sitio web muy utilizado e interesante para obtener tipografías que puedes usar en tus proyectos es Google Fonts.
Para incorporar las tipografías personalizadas a nuestro proyecto crearemos una carpeta particular llamada fonts/ en la que guardaremos los archivos que descarguemos desde Google Fonts. Seguidamente, debemos declarar este recurso en el archivo pubspecs.yaml. Este archivo contiene las especificaciones de todos los recursos públicos que estarán disponibles para ser usados en nuestro proyecto. La sintaxis yaml está inspirada en json y xml y se usa en Flutter para definir la estructura de recursos y configuraciones globales de nuestra aplicación.
La forma de declarar los recursos de tipografía que usaremos en nuestro proyecto es la siguiente:
...
fonts:
- family: <nombre de la fuente> fonts:
- asset: <ubicación del archivo de fuente>...
Algo que se debe tener en cuenta es que yaml es bastante estricto con la indentación de los datos. En otras palabras, la sangría, tabulación o espaciado de cada línea debe estar indicada correctamente para que no haya problemas con la lectura y procesamiento posterior de las configuraciones.
Para aplicar la nueva tipografía a nuestro código bastará con incluir en el widgetTextStyle, la propiedad fontFamily e indicar en ella el nombre de la fuente que hemos declarado en nuestro archivo de configuración.
Yo para evitar los archivos grandes, y confusos dividí el archivo description_place.dart en
stars.dart
description_body.dart
description_head.dart
description.dart (El cual se llama desde el main.dart)
Y todos estos estan en /lib/components/place.
Haciendo estos cambios el código se me hizo mas mantenible.
P.D.: Tambien agrege nombres mas declarativos a las variables. Ej.: nameOfThePlace, descriptionOfThePlace, amountOfStars, ya que por lo que leí es valido usar Camel Case en variables, y este estilo me parece mas claro para leer.
Muy buen aporte Marco. Ese ejercicio te ayudará a reutilizar los Widgets tanto como quieras.
Aportando al curso, es bueno agregar que ahora el manejo de las fuentes en Flutter con Google Fonts ahora es mucho mas fácil, solo es de instalar el plugin de google fonts desde
Y luego agregarlas como estilos
Text('Hola mundo mundial',style:GoogleFonts.lato(),),
Si se quisieran agregar estilos adicionales como color se tiene que hacer de esta forma
Text('Hola mundo mundial',style:GoogleFonts.lato(textStyle:TextStyle(color:Colors.blue,letterSpacing:.5),),),
Buen aporte👍
Gracias por tu aporte. Esto fue lo que hice y me gusto mas.
En el caso que se desee cambiar la tipografia por defecto a toda la app, ésta debe ser declarado dentro de tema de la aplicación
Y me parecería mucho mejor hacerlo de esta manera, así no tendríamos que especificar la tipografía en cada widget Text.
buen aporte viejo...
Si no notan el cambio de la fuente deténganlo y vuelvan a iniciar el proceso de virtualización , en el caso de VS Code Stop y F5
ya me estaba volviendo loco porque no veía los cambios en mi dispositivo :D
Gracias por la recomendación!
Para los que estén usando VS Code como en mi caso, no hay necesidad de hacer el Packages upgrade, el editor lo realiza cuando compilas el código.
Otra cosa, en VSCode recordar que si se está en debuging cuando se agregan o se hacen cambios a las fuentes en pubspec.yaml deben pulsar stop y F5 de nuevo para que los cambios tengan efecto. Las nuevas fuentes no se aplican en hot reload
Gracias Pigpen!!!!! Me estaba volviendo loco al no ver los cambios en VS-Code y sí en Android Studio.
OpenSans para el que le interese un font diferente
fonts:- family:OpenSansfonts:- asset: fonts/OpenSans-Bold.ttfweight:700style: normal
- asset: fonts/OpenSans-BoldItalic.ttfweight:700style: italic
- asset: fonts/OpenSans-ExtraBold.ttfweight:800style: normal
- asset: fonts/OpenSans-ExtraBoldItalic.ttfweight:800style: italic
- asset: fonts/OpenSans-Italic.ttfweight:400style: italic
- asset: fonts/OpenSans-Light.ttfweight:300style: normal
- asset: fonts/OpenSans-LightItalic.ttfweight:300style: italic
- asset: fonts/OpenSans-Regular.ttfweight:400style: normal
- asset: fonts/OpenSans-SemiBold.ttfweight:600style: normal
- asset: fonts/OpenSans-SemiBoldItalic.ttfweight:600style: italic
🐱💻 Utilizando fuentes en la aplicación.
name: platzi_trips
description: A new Flutter application.
version: 1.0.0+1
environment:sdk:">=2.7.0 <3.0.0"dependencies:flutter:sdk: flutter
cupertino_icons: ^1.0.0
dev_dependencies:flutter_test:sdk: flutter
flutter:uses-material-design:truefonts:-family: Lato
fonts:-asset: fonts/Lato-Regular.ttf
Tengo mi telefono conectado, y no se visualizan los cambios de la tipografía, ya revisé el código y todo está bien, y el hot reloading está funcionando correctamente, intenté cerrar el hot reloading, desintalar la aplicacion y volver a correr flutter run pero no funciona
Hasta aquí vamos mal, acabo de escribir 32 líneas de código solo para mostrar un nombre con unas estrellas al lado? Espero que más adelante la cosa se simplifique
Como se nota que no has programado en Android, donde tenías que hacer todo esto por lados diferentes (xml, java, diseño...). Flutter hace que en la mitad de tiempo invertido hagas el triple.
Cateto
══╡ EXCEPTIONCAUGHTBYRENDERINGLIBRARY ╞═════════════════════════════════════════════════════════
I/flutter(3332):The following assertion was thrown during layout:I/flutter(3332):ARenderFlex overflowed by 63 pixels on the bottom.I/flutter(3332):I/flutter(3332):The relevant error-causing widget was:I/flutter(3332):Column file:///home/julio/Android/proyectsFluter/flutter_app/lib/descripcion_place.dart:69:12```
A juzgar por lo que dicen, te excedes por 63px hacia abajo, intenta reducir el tamaño o el margen, o si lo quieres llevar a otro nivel, puedes probar utilizar MediaQuery, te dejo el link de sus especificaciones aquí
Creen que Yaml sea se mejor que json para las configuraciones?
Ciertamente hay claras ventajas de usar YAML sobre JSON para configuraciones: soporta comentarios, soporta muchos tipos de datos, quita el ruido de las comas, llaves etc.
En general es más limpio y fácil de entender.
Para configuración creo que si es mejor opción. Es más limpio y dinamico que lo complejo que se puede volver un JSON.
jajajaj miren lo que hice con las fuentes
Tambien puedes instalar la fuente desde https://pub.dev/ y luego agregarla al tema de la siguiente forma
Sucede algo interesante al descargar las fuentes desde google fonts e instalar el plugin https://pub.dev/packages/google_fonts.
El plugin automáticamente hara un match de las fuentes descargadas y las usara en vez de descargarlas via HTTP en runTime, para que esto funcione tienen que dejar las fuentes en una carpeta google_fonts y agregarla al pubspec.yaml's de la siguiente manera:
assets:
google_fonts/
PD: El plugin automáticamente rapea los estilos de las fuentes basados en el nombre de estas, así que no es recomendable renombrarlas
cuando se colocar algo en el pubspec no se le da package upgrade porque esto hace que se actualices todas las libreritas y esto puede crear un compatibilidades. En el caso de colocar el fontfamily es darle en packages get