Вопрос использования ассетов в Flutter web проекте
Всем доброго дня!
Меня зовут Алексей, я основатель и frontend разработчик системы автоматизации работы управляющих компаний «Оператор 18».
Сейчас я переписываю проекта с нуля, с учётом ошибок применения архитектуры и структуры самого проекта.
Посмотреть вторую версию системы (то что готово) и понажимать на кнопки можно тут. Доступ в систему: Логин operator@mail. ru, пароль: operator.
Здесь первая статья, в которой я описал одну из сложностей, с которыми столкнулся в ходе разработки — создавать или не создавать свои виджеты.
В этой статье я хочу рассказать об опыте применения ассетов (assets), а именно картинок для web приложения написанного на фреймворке Flutter.
В системе «Оператор 18» основным элементом является реестр заявок. Выглядит он следующим образом:
Заявки могут быть обычными, платными или аварийными. При этом, заявка может иметь один из следующих статусов:
Все изображения статусов — это png картинки, которые я добавил в проект, а именно — в папку assets/icons в корне проекта. И еще прописал зависимости в pubspec.yaml:
В самом коде я получаю картинку просто обращаясь к текущему статусу заявки и, в зависимости от статуса, геттер отдает мне ту или иную картинку:
Ну, кажется всё! Бидлим проект, загружаем на сервер и… получаем следующий результат:
Как видно, ни одна картинка не подгрузилась. Но если открыть консоль Google Chrome, станет сразу понятно, что браузер не знает где взять эти самые картинки (хоть они и есть на сервере).
Чтобы это поправить, нужно прописать ещё некоторые моменты, а именно:
1 Открываем файл web/index. html и добавляем описание картинок в него:
2 Открываем далее web/manifest. json и добавляем следующий код:
Снова билдим и деплоим на сервер. Теперь картинки загружаются!
Но некоторые картинки в итоге выглядят не очень хорошо, как будто бы разрешение картинки не подходит для разрешения экрана. К слову сказать, я использую flutter_screenutil, и размер экрана выбран 1920 х 1080 пикселей (может быть в этом проблема).
Признаюсь, я не стал разбираться в вопросе почему некоторые картинки выглядели криво. Но я понял для себя, что не хочу каждый раз отслеживать множество изменений в нескольких местах при добавлении/изменении картинок. Поэтому я стал использовать штатный Icon виджет. Выглядит теперь не совсем по дизайну, но за то меньше проблем, на мой взгляд.
Сама иконка статуса теперь оформлена следующим образом:
А страница с заявками выглядит так:
По итогу, я получил:
- экономию времени;
- отсутсвие необходимости контроля множества файлов;
- отсутсвие необходимости использовать множество картинок для разных разрешений экрана (1х, 2х и т. д.);
- упрощенную процедуру деплоя очередной сборки на сервер.
Спасибо за прочтение! Буду благодарен за критику/советы/иные комментарии.