1. Введение
Flutter
Как одна из самых популярных технологий в настоящее время, она уже привлекла внимание большого количества энтузиастов технологий, и даже некоторых闲鱼
,美团
,腾讯
И другие крупные компании были введены в эксплуатацию. Хотя его экология еще не полностью созрела,Google
Благо, скорость его развития уже достаточно поразительна, можно предвидеть, что в будущемFlutter
Спрос на разработчиков также будет расти.
Будь то первопроходцы технологий или будущие тенденции, прошло 9102 года.Как фронтенд-разработчику, кажется, нет причин не попробовать это. Именно с таким менталитетом автор и начал изучатьFlutter
, и построилсклад, весь последующий код будет размещаться на нем, добро пожаловать звездочка, учитесь вместе. Это серия статей о Flutter, которую я написал:
- Создание красивых интерфейсов пользовательского интерфейса с помощью Flutter — основные компоненты
- Компонент контейнера прокрутки Flutter — ListView
- Компоновка сетки Flutter — статьи GridView
- Использование пользовательского значка во Flutter
То, чем я собираюсь поделиться сегодня, на самом деле очень просто, мы все знаем, чтоFlutter
встроенный наборMaterial Design
СтильIcon图标
, но для зрелого приложения этого обычно недостаточно. Для этого нам нужно ввести пользовательскийIcon图标
.
Эта статья будетAnt Design
Возьмите библиотеку значков в качестве примера, чтобы представить, какFlutter
Внедрите пользовательские значки в файлы .
2. Подготовка: файл шрифта
Так называемой «умной женщине трудно быть без риса», чтобы ввести собственный значок, сначала мы должны подготовить файл шрифта значка (.ttf
суффикс). Для больших компаний достаточно найти визуальных одноклассников. Но если это побочный проект, который мы делаем сами, или когда у нас нет ресурсов, мы можем обратиться кБиблиотека векторных иконок AlibabaВыберите свой любимый значок.
здесь сОфициальная библиотека иконок Ant DesignВ качестве примера (всего значков 600) мы добавляем в проект файл шрифта значка, выполнив следующие действия:
Добавить корзину -> Нажмите на корзину -> Загрузить код -> Распаковать -> Копировать на проект (переименование)
3. Объявить пользовательский шрифт
Недостаточно просто скопировать файлы шрифтов в проект, нам нужно передать声明
способ сказатьFlutter
Доступны новые шрифты. Откройте корневой каталог проектаpubspec.yaml
файл, нашелfonts
Этот абзац:
To add custom fonts to your application, add a fonts section here, in this "flutter" section. Each entry in this list should have a "family" key with the font family name, and a "fonts" key with a list giving the asset and other descriptors for the font.
Комментарий позволяет нам добавить объявление пользовательского шрифта ниже этого абзаца текста.В сочетании с его закомментированным примером и текущим каталогом проекта мы можем настроить его следующим образом:
项目工程目录结构
.
├── README.md
├── android
│ └── app
├── assets
│ └── fonts
│ └── AntdIcons.ttf
├── flutter_training_app.iml
├── ios
│ └── Flutter
├── lib
│ └── main.dart
├── pubspec.lock
└── pubspec.yaml
字体声明
fonts:
- family: AntdIcons
fonts:
- asset: assets/fonts/AntdIcons.ttf
Уведомление:После настройки обязательно выполнитеflutter packages get
команда иrebuild
элемент, в противном случае файл шрифта не может быть использован.
4. Напишите пользовательские IconData
На самом деле пока что мы можем использовать иконку, которую только что скачали, например следующий код:
Icon(
IconData(0xe77d, fontFamily: 'AntdIcons'),
size: 20,
color: Colors.black
)
вfontFamily
значение'AntdIcons'
это новый шрифт, который мы только что объявили, но в коде0xe77d
Откуда взялись цифры? Откройте ранее скачанную и распакованную папку еще раз, там естьdemo_index.html
Файл, откройте его в браузере, мы можем увидеть следующую картинку:
существуетUnicode
На этой вкладке мы видим, что все значки тесно связаны между собой.Type
а такжеUnicode码
Контрастные отношения. Итак, теоретически, какую иконку мы хотим использовать, просто скопируйте ееUnicode
Просто вставьте это в код.
Однако такой подход явно не очень дружелюбен. Во-первых, мы используемIcon
Вы должны искать его в этой таблице отношений раньше; во-вторых, вы уверены, какой иконке соответствует эта строка чисел в следующий раз, когда вы увидите ее в коде? Итак, нам нужен более элегантный способ управления пользовательскими значками.
На самом деле практика тоже проста, мы можем создать собственный класс значков:
class AntdIcons {
static const IconData checkCircle = IconData(0xe77d, fontFamily: 'AntdIcons');
static const IconData CI = IconData(0xe77e, fontFamily: 'AntdIcons');
static const IconData Dollar = IconData(0xe77f, fontFamily: 'AntdIcons');
...
}
Тогда метод использования становится:
Icon(
AntdIcons.checkCircle,
size: 20,
color: Colors.black
)
Приведенный выше код полностью эквивалентен предыдущему прямому использованиюUnicode码
Эффект. Но для того, чтобы использовать все иконки, мы должны обогатитьAntdIcons
этот класс. Для этого можно написать небольшой скрипт, вdemo_index.html
Его можно определить, запустив в консоли окна браузераIconData
код:
function camelCase(str) {
return str.replace(/[ -]+(\w)/g, (match, char) => char.toUpperCase());
}
function makeCode({name, code}) {
return `static const IconData ${camelCase(name)} = IconData(0${code.substr(2, 5)}, fontFamily: 'antd-icons');\n`;
}
Array
.from(document.querySelectorAll('.unicode .dib'))
.map(element => {
return {
name: element.querySelector('.name').innerText,
code: element.querySelector('.code-name').innerText
};
})
.map(makeCode)
.join('\n');
PS:В результатах вывода возможны отдельные небольшие ошибки из-за нестандартного именования автора иконки, которое можно изменить вручную.Полный файл можно посмотретьздесь.
Теперь пришло время повеселиться~~~
5. Резюме
В этой статье используется практическоеAnt Design
Пример значка, детализируя какFlutter
Введена индивидуальная иконка, надеюсь, вам поможет, о ~
Весь код в этой статье размещен по адресуздесь, вы также можете подписаться на меняBlog, добро пожаловать учиться вместе ~