Me encantan los íconos de material. Realmente lo hago. Pero, de alguna manera, de repente me sentí cansado de ellos. Así que eché un vistazo y encontré un maravilloso conjunto de íconos de Icons8. Y lo mejor de todo ... ¡gratis! (Ver la licencia Good Boy).
Sí, ¿qué mundo tan maravilloso y así sucesivamente, pero, pero escribiendo todos esos códigos desagradables en constantes de dardos? ¡De ninguna manera!
¡Y Fluttericon acaba de salir de la nada! Me hizo todo el trabajo sucio.
Comencé a usar esta biblioteca en mis proyectos, y realmente parecían agradables. Entonces me pedí: ¿por qué no publicarlo para que otros lo disfruten? Después de todo, en todo este proceso, muchas personas que decidieron no guardar los íconos para sí mismos y ayudar a otros con un software que no tenían necesidad de compartir conmigo o con cualquier otra persona.
Entonces, ¡gracias Icons8 y Fluttericon!
(Y, claro, ¿por qué no? ¡Gracias Microsoft Excel! XD)
Aquí estamos. A partir de la versión 2.0.0, Lineicons será nulo, como lo sugirió el equipo de DART.
En caso de que esté interesado: seguridad nula.
2.12.0 )const icon = const LineIcon.tablet(); vs final icon = LineIcon.tablet() ))values se proporciona en la clase Lineicons para acceder IconData como un mapa. Es decir, Icon(LineIcons.values['code']) .byName Getter también está disponible para acceder al IconData relacionado con el nombre del icono aprobado como parámetro. Es decir, Icon(LineIcons.byName('desktop')) .LineIcon (singular) se proporciona a lo largo de LineIcons (plural), por lo que puede ahorrar algún código usando LineIcon.tablet() en lugar de Icon(LineIcons.tablet) .LineIcon son los mismos que los de Icon , por lo que puede personalizar una instancia LineIcon de la misma manera. Es decir, Icon(LineIcons.px500, color: Colors.red) es equivalente a LineIcon.px500(color: Colors.red) (o Icon(LineIcons.values['px500'], color: Colors.red) ). En algunos casos, los nombres no coinciden exactamente con los de los Icons8; es decir, 500px se convirtió en px500 en su lugar. Los íconos deben reconocerse fácilmente, de todos modos.
Por favor, tenga en cuenta: la versión 2.0.0 y superior será nula
La fuente (v1.3.0)
De la fuente a la clase
De la clase al paquete
Imagine un cruce: estilo Windows10 e inspiración impresionante. Bueno, ¡deja de soñar! Tienes muchos íconos hermosos para elegir para tu aplicación Android (aún no se prueba en iOS, lo siento). Prefiero este conjunto sobre el material, y me parece mucho más fácil encontrar el icono que estoy buscando en Icons8 que en la página de iconos de material.
Instalación
Incluya line_icons en su archivo pubspec.yaml :
dependencies :
flutter :
sdk : flutter
line_icons : ^2.0.2Si su IDE no lo hace automáticamente, escriba:
flutter packages get
Usando
Importe el paquete en su archivo Flutter y use Icon para obtener el widget de icono real:
import 'package:line_icons/line_icons.dart' ;
...
Icon _icon = Icon ( LineIcons .code);
...O elija un constructor adecuado:
import 'package:line_icons/line_icon.dart' ;
...
const Icon _icon = const LineIcon . code ();
...O ve por el camino feo; P:
import 'package:line_icons/line_icons.dart' ;
...
Icon _icon = Icon ( LineIcons .values[ 'code' ]);
...O incluso una forma desagradable:
import 'package:line_icons/line_icons.dart' ;
...
Icon _icon = Icon ( LineIcons . byName ( 'code' ));
...Muestra
import 'package:flutter/material.dart' ;
import 'package:line_icons/line_icon.dart' ;
import 'package:line_icons/line_icons.dart' ;
void main () => runApp ( MyApp ());
class MyApp extends StatelessWidget {
@override
Widget build ( BuildContext context) {
return MaterialApp (
theme : ThemeData (
primarySwatch : Colors .blue,
useMaterial3 : true ,
),
home : MyHomePage (title : 'Line Icons Demo Home Page' ),
);
}
}
class MyHomePage extends StatelessWidget {
MyHomePage ({
required this .title,
});
final String title;
@override
Widget build ( BuildContext context) {
return Scaffold (
appBar : AppBar (
title : Text (title),
),
body : Center (
child : Column (
mainAxisSize : MainAxisSize .min,
children : [
Text (
'Awesome Line Icons are great!' ,
style : Theme . of (context).textTheme.headlineMedium,
),
Text (
'Version 2.0.2 constructors are const now!' ,
style : Theme . of (context).textTheme.headlineSmall,
),
SizedBox (
height : 48.0 ,
),
// Using LineIcon (no 's') for concision. It returns an Icon object
const LineIcon . tablet (
size : 48.0 ,
color : Colors .red,
),
Text (
'const LineIcon.tablet(size: 48.0, color: Colors.red,)' ,
),
SizedBox (
height : 24.0 ,
),
// Using LineIcons the standard way: injecting the IconData into the Icon object
const Icon (
LineIcons .desktop,
size : 48.0 ,
color : Colors .blue,
),
Text (
'const Icon(LineIcons.desktop, size: 48.0, color: Colors.blue,)' ,
),
SizedBox (
height : 24.0 ,
),
// Using LineIcons the nasty way: passing the IconData via the values map
Icon (
LineIcons .values[ 'mobilePhone' ],
size : 48.0 ,
color : Colors .amber,
),
Text (
'Icon(LineIcons.values[ ' mobilePhone ' ], size: 48.0, color: Colors.amber,)' ,
),
],
),
),
);
}
}Si está interesado en el código (siéntase libre de modificarlo de todos modos que desee), puede encontrarlo aquí: https://github.com/galonsos/line_icons