Я люблю материальные значки. Я действительно делаю. Но почему -то я внезапно почувствовал их усталость. Поэтому я посмотрел вокруг и нашел замечательный набор икон от Icons8. И лучше всего ... бесплатно! (См. Лицензию Good Boy).
Да, какой чудесный мир и так далее, но, записав все эти неприятные коды в константы DART? Ни за что!
И Fluttericon только что вышел из синего! Это сделало для меня всю грязную работу.
Я начал использовать эту библиотеку в своих проектах, и они действительно казались хорошими. Итак, я спросил себя: почему бы не публиковать его для других? В конце концов, во всем этом процессе мне действительно помогали многие люди, которые решили не держать значки для себя и не помогать другим с кусочком программного обеспечения, которым им не нужно было поделиться со мной или кем -либо еще.
Итак, спасибо Icons8 и Fluttericon!
(И, конечно, почему бы и нет: спасибо Microsoft Excel! XD)
Вот мы. Начиная с версии 2.0.0, линии будут нулевыми безопасными, как предложено команда DART.
На случай, если вам может быть интересно: нулевая безопасность.
2.12.0 )const icon = const LineIcon.tablet(); vs final icon = LineIcon.tablet() )values предоставляется в классе линии для доступа к IconData в качестве карты. Т.е. Icon(LineIcons.values['code']) .byName Getter также доступен для доступа к IconData , связанным с именем значка, передаваемого в качестве параметра. Т.е. Icon(LineIcons.byName('desktop')) .LineIcon (единственный) предоставляется вдоль LineIcons (множественное число), так что вы можете избавиться от некоторого кода, используя LineIcon.tablet() вместо Icon(LineIcons.tablet) .LineIcon такие же, как и Icon , поэтому вы можете настроить экземпляр LineIcon таким же образом. Т.е. Icon(LineIcons.px500, color: Colors.red) LineIcon.px500(color: Colors.red) Icon(LineIcons.values['px500'], color: Colors.red) В некоторых случаях имена точно не совпадают в Icons8; т.е. вместо этого 500px стал px500 . В любом случае, значки должны быть легко распознаны.
Пожалуйста, имейте в виду: версия 2.0.0 и выше будет нулевой безопасной
Шрифт (v1.3.0)
От шрифта до класса
От класса до пакета
Представьте себе перекрестный: стиль Windows10 и потрясающее вдохновение. Ну, перестань мечтать! У вас есть много красивых значков на выбор для вашего приложения Android (еще не тестируется в iOS, извините). Мне лучше понравится этот материал, и я нахожу гораздо проще найти значок, который я ищу в Icons8, чем на странице значков материала.
Установка
Включите line_icons в свой файл pubspec.yaml :
dependencies :
flutter :
sdk : flutter
line_icons : ^2.0.2Если ваш IDE не делает это автоматически, введите:
flutter packages get
С использованием
Импортируйте пакет в свой файл Flutter и используйте Icon , чтобы получить фактический виджет значков:
import 'package:line_icons/line_icons.dart' ;
...
Icon _icon = Icon ( LineIcons .code);
...Или выберите подходящий конструктор:
import 'package:line_icons/line_icon.dart' ;
...
const Icon _icon = const LineIcon . code ();
...Или идти по уродливо; P:
import 'package:line_icons/line_icons.dart' ;
...
Icon _icon = Icon ( LineIcons .values[ 'code' ]);
...Или даже причудливый противный способ:
import 'package:line_icons/line_icons.dart' ;
...
Icon _icon = Icon ( LineIcons . byName ( 'code' ));
...Образец
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,)' ,
),
],
),
),
);
}
}Если вы заинтересованы в коде (не стесняйтесь изменить его в любом случае), вы можете найти его здесь: https://github.com/galonsos/line_icons