Eu amo ícones materiais. Eu realmente faço. Mas, de alguma forma, de repente me senti cansado deles. Então, dei uma olhada e encontrei um maravilhoso conjunto de ícones da Icons8. E o melhor de tudo ... de graça! (Veja a licença do Good Boy).
Sim, que mundo maravilhoso e assim por diante, mas escrevendo todos esses códigos desagradáveis em constantes de dardos? Sem chance!
E Fluttericon acabou de sair do nada! Isso fez todo o trabalho sujo para mim.
Comecei a usar essa biblioteca em meus projetos e eles realmente pareciam legais. Então eu pedi para mim mesma: por que não publicá -lo para que outras pessoas desfrutem? Afinal, em todo esse processo, fui realmente auxiliado por muitas pessoas que decidiram não manter os ícones por si mesmos e ajudar os outros com um software que não precisavam compartilhar comigo ou com qualquer outra pessoa.
Então, obrigado Icons8 e Fluttericon!
(E, claro, por que não: obrigado Microsoft Excel! XD)
Aqui estamos nós. A partir da versão 2.0.0, os Lineicons serão seguros, conforme sugerido pela equipe do DART.
Caso você esteja interessado: nulo-segurança.
2.12.0 )const icon = const LineIcon.tablet(); vs final icon = LineIcon.tablet() )values é fornecida na classe Lineicons para acessar IconData como um mapa. Ou seja, Icon(LineIcons.values['code']) .byName Getter também está disponível para acessar o IconData relacionado ao nome do ícone aprovado como parâmetro. Ou seja, Icon(LineIcons.byName('desktop')) .LineIcon (singular) é fornecida ao longo de LineIcons (plural), para que você possa poupar algum código usando LineIcon.tablet() em vez de Icon(LineIcons.tablet) .LineIcon são os mesmos que o Icon , para que você possa personalizar uma instância LineIcon da mesma maneira. IE, Icon(LineIcons.px500, color: Colors.red) é equivalente a LineIcon.px500(color: Colors.red) (ou Icon(LineIcons.values['px500'], color: Colors.red) ). Em alguns casos, os nomes não correspondem exatamente àqueles em Icons8; IE, 500px se tornaram px500 . De qualquer forma, os ícones devem ser facilmente reconhecidos.
Por favor, esteja ciente: a versão 2.0.0 e acima será segura nula
A fonte (v1.3.0)
Da fonte para a classe
Da classe para o pacote
Imagine um estilo cruzado: estilo Windows10 e inspiração incrível. Bem, pare de sonhar! Você tem muitos ícones bonitos para escolher para o seu aplicativo Android (ainda não testado no iOS, desculpe). Prefiro que este conjunto sobre o material e acho muito mais fácil encontrar o ícone que estou procurando no icons8 do que na página de ícones de materiais.
Instalação
Inclua line_icons no seu arquivo pubspec.yaml :
dependencies :
flutter :
sdk : flutter
line_icons : ^2.0.2Se o seu IDE não o fizer automaticamente, digite:
flutter packages get
Usando
Importe o pacote no seu arquivo fleta e use Icon para obter o widget de ícone real:
import 'package:line_icons/line_icons.dart' ;
...
Icon _icon = Icon ( LineIcons .code);
...Ou escolha um construtor adequado:
import 'package:line_icons/line_icon.dart' ;
...
const Icon _icon = const LineIcon . code ();
...Ou siga o caminho feio; P:
import 'package:line_icons/line_icons.dart' ;
...
Icon _icon = Icon ( LineIcons .values[ 'code' ]);
...Ou até uma maneira desagradável e desagradável:
import 'package:line_icons/line_icons.dart' ;
...
Icon _icon = Icon ( LineIcons . byName ( 'code' ));
...Amostra
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,)' ,
),
],
),
),
);
}
}Se você estiver interessado no código (sinta -se à vontade para modificá -lo de qualquer maneira que quiser), pode encontrá -lo aqui: https://github.com/galonsos/line_icons