Saya suka ikon materi. Saya sangat melakukannya. Tapi, entah bagaimana, tiba -tiba saya merasa lelah dengan mereka. Jadi saya melihat -lihat dan menemukan satu set ikon yang indah oleh Icons8. Dan yang terbaik dari semuanya ... gratis! (Lihat lisensi anak laki -laki yang baik).
Ya, dunia yang luar biasa dan sebagainya, tetapi, menuliskan semua kode jahat itu ke dalam konstanta panah? Mustahil!
Dan Fluttericon baru saja tiba -tiba! Itu membuat semua pekerjaan kotor untuk saya.
Saya mulai menggunakan perpustakaan ini dalam proyek saya, dan mereka benar -benar tampak menyenangkan. Jadi saya bertanya pada diri sendiri: Mengapa tidak menerbitkannya untuk dinikmati orang lain? Lagi pula, dalam semua proses ini, saya memang dibantu oleh banyak orang yang memutuskan untuk tidak menyimpan ikon untuk diri mereka sendiri dan membantu orang lain dengan sepotong perangkat lunak yang tidak perlu mereka bagikan dengan saya atau siapa pun.
Jadi, terima kasih Icons8 dan Fluttericon!
(Dan, tentu, mengapa tidak: Terima kasih Microsoft Excel! XD)
Di sinilah kita. Mulai dari versi 2.0.0, Lineicons akan aman, seperti yang disarankan oleh tim DART.
Untuk berjaga-jaga jika Anda mungkin tertarik: Null-Safety.
2.12.0 )const icon = const LineIcon.tablet(); vs final icon = LineIcon.tablet() )values Properti disediakan di kelas LineCons untuk mengakses IconData sebagai peta. Yaitu, Icon(LineIcons.values['code']) .byName Getter juga tersedia untuk mengakses IconData yang terkait dengan nama ikon yang dilewati sebagai parameter. Yaitu, Icon(LineIcons.byName('desktop')) .LineIcon (singular) disediakan di sepanjang LineIcons (jamak), sehingga Anda dapat menyisihkan beberapa kode menggunakan LineIcon.tablet() alih -alih Icon(LineIcons.tablet) .LineIcon sama dengan Icon , jadi Anda dapat menyesuaikan instance LineIcon dengan cara yang sama. Yaitu, Icon(LineIcons.px500, color: Colors.red) setara dengan LineIcon.px500(color: Colors.red) (atau Icon(LineIcons.values['px500'], color: Colors.red) ). Dalam beberapa kasus, nama tidak persis cocok dengan yang ada di Icons8; yaitu, 500px menjadi px500 sebagai gantinya. Ikon harus mudah dikenali.
Harap diperhatikan: Versi 2.0.0 dan di atas akan menjadi null-safe
Font (v1.3.0)
Dari font ke kelas
Dari kelas ke paket
Bayangkan cross-over: Gaya Windows10 dan inspirasi yang luar biasa. Nah, berhentilah bermimpi! Anda punya banyak ikon indah untuk dipilih untuk aplikasi Android Anda (belum diuji di iOS, maaf). Saya lebih suka ini mengatur materi ini, dan saya merasa jauh lebih mudah untuk menemukan ikon yang saya cari di Icons8 daripada di halaman Ikon Material.
Menginstal
Sertakan line_icons di file pubspec.yaml Anda:
dependencies :
flutter :
sdk : flutter
line_icons : ^2.0.2Jika IDE Anda tidak melakukannya secara otomatis, ketik:
flutter packages get
Menggunakan
Impor paket di file flutter Anda dan gunakan Icon untuk mendapatkan widget ikon yang sebenarnya:
import 'package:line_icons/line_icons.dart' ;
...
Icon _icon = Icon ( LineIcons .code);
...Atau pilih konstruktor yang cocok:
import 'package:line_icons/line_icon.dart' ;
...
const Icon _icon = const LineIcon . code ();
...Atau pergi dengan cara yang jelek; p:
import 'package:line_icons/line_icons.dart' ;
...
Icon _icon = Icon ( LineIcons .values[ 'code' ]);
...Atau bahkan cara jahat yang mewah:
import 'package:line_icons/line_icons.dart' ;
...
Icon _icon = Icon ( LineIcons . byName ( 'code' ));
...Mencicipi
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,)' ,
),
],
),
),
);
}
}Jika Anda tertarik pada kode (jangan ragu untuk memodifikasinya, tetap saja Anda inginkan), Anda dapat menemukannya di sini: https://github.com/galonsos/line_icons