Почему в cupertino_icons так мало значков?

Два вопроса Я подумал, что было бы разумнее объединить их, потому что они очень тесно связаны.

Почему там не больше / все иконки?

Глядя на константы CupertinoIcons класс я смог разобрать, что есть 35 иконок в CupertinoIcons,

Страница документации говорит об этой карте:

карта значков в этом значке шрифта.

Я ожидаю, что все эти значки также будут представлены в CupertinoIcons, всего 374 не хватает, так как на карте есть 409 иконок.

Для меня CupertinoIcons немного бесполезно только с 35 значками, к которым я могу получить доступ, не имея cupertino_icons в моем pubspec.yaml,

Я понял, что установка cupertino_icons может что-то изменить.

Что на самом деле делает плагин?

Теперь, когда я установил cupertino_icons Плагин, ничего не изменилось. У меня все еще есть те же 35 иконок, что и раньше (и они отображаются с плагином и без него).

Это происходит потому, что на моем устройстве уже установлен шрифт, и поэтому он не нуждается в cupertino_icons плагин для того, чтобы работать?

2 ответа

Решение

Плагин гарантирует, что необходимые ресурсы (шрифты) включены.

Если вы посмотрите на источник, вы можете легко скопировать определенные там константы, если они существуют в шрифте. А так как Flutter является открытым исходным кодом, вы, безусловно, могли бы создать для этого пиар, если найдете другие полезные значки, которые, по вашему мнению, должны быть доступны пользователям.

Что касается того, почему... это, вероятно, просто не было приоритетом никем в данный момент. Это довольно утомительная работа по поиску, названию и представлению этих значков - и я представляю себе, что многие люди, которые делают это, в итоге придут к выводу: "Хорошо, я закончил сейчас", вместо того, чтобы внести свой вклад в проект.

Вы можете увидеть более полный список значков, содержащихся в шрифте здесь. Вы можете использовать любой из этих значков, даже если он еще не определен в классе значков купертино. Например, если вы по какой-то причине хотели значок бейсбола:

const IconData baseball = const IconData(
  0xf4ba, 
  fontFamily: CupertinoIcons.iconFont, 
  fontPackage: CupertinoIcons.iconFontPackage);

Было бы вполне возможно добавить это в качестве запроса на получение https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/cupertino/icons.dart - но я думаю, что это не в там, потому что это не замечено как обычно используемый или необходимый, или возможно потому, что кто-то еще не достиг этого.

В любом случае вам все еще нужен пакет cupertino_icons, потому что это обеспечит включение файла.ttf в ваше приложение (которое приложению потребуется для отображения значка во время выполнения). Но если вы не планируете использовать их, не включайте их, так как это приведет к тому, что ваше приложение будет больше, чем нужно (дополнительный шрифт займет место).

cupertino_icons здесь, чтобы убедиться, что шрифт купертино включен, даже в ОС, которые не включают его изначально. Такие как Fushia или Android.

Использование значков cupertino на Android без установленного пакета приведет к графической ошибке:

введите описание изображения здесь


Вы должны включить cupertino_icons в ваших зависимостях, если вы используете enum CupertinoIcons

Есть также эквивалент для дизайна материалов. Но это не пакет. Это свойство, которое вам нужно установить внутри вашего pubspec.yaml:

flutter:
  uses-material-design: true

Следующая строка гарантирует, что шрифт Material Icons включен в ваше приложение, так что вы можете использовать значки в классе Icons материала.

Другие вопросы по тегам