Макс Апшер

Макс Апшер 

🦈Фурри 🎨художник и 💻мобильный разработчик

1subscriber

26posts

Showcase

8
goals1
0 of 100 paid subscribers
Когда я наберу более 100 подписчиков, я смогу намного больше уделять времени артам и вашим персонажам ;)

Разработка на Flutter с нуля - мой опыт

Всем привет! Я сейчас являюсь студентом МАДИ, и учусь на инженера разработчика, тобишь того же программиста. Сейчас я на третьем курсе и хотел бы поделиться своим первым опытом в более менее осознанной разработке мобильных приложений, в данной статье именно на Flutter (хотя я поклонник .NET) :)

И так, давайте, пожалуй, начнём.

В 2023 году я ещё пытался всё реализовать на Xamarin, но зашёл в тупик, от чего разработку я на время отложил. Но в конце 2024 года, в универе нас познакомили с таким фреймворком, как Flutter.
Flutter — комплект средств разработки и фреймворк с открытым исходным кодом для создания мобильных приложений под Android и iOS, веб-приложений.
Тогда, после создания учебного веб-приложения на этом фреймворке, было принято мною решение начать пробовать написать полноценное мобильное приложение. И как раз под руку мне попалось то решение проблемы, описанной выше, которую я забросил. Разработка началась заново.
Первым делом, надо быть сделать локальную базу данных. Она должна быть легковестной, быстрой и легко расширяемой. Мой выбор пал на Hive.
Hive — это легкая и быстрая база данных NoSQL с ключевыми значениями, специально разработанная для Flutter. В реализации и пользования он был достаточно лёгким, от чего я на нём и остановился.
Первым делом нужно было просто наладить создание, редактирование и представление списка персонажей. За несколько недель (я ещё и работаю, по этому свободного времени у меня достаточно мало) я смог сделать прототип, но рабочий.
Моим друзьям зашло и уже ждали результата. Хоть какого то :)
Всё это было уже налажено, а исходники можете посмотреть в моём GitHub.
По этому я двинулся дальше. По запросу своих друзей добавлял нужные поля, новые таблицы базы данных, а вот дальше я столкнулся с первой проблемой - надо было как то реализовать возможность вводить свои поля с названиями, причём в «неограниченном количестве».

Как я решил это проблему?

Так как у нас Hive с массивами строк работает не очень хорошо, я решил создать отдельно класс, который хранит в себе
структуру собственных полей ввода (что-то вроде в Amino), а затем этот класс у нас сохраняется в базовой модели персонажа в виде List.
Но ещё надо было это отобразить! Отображение я решил делать через циклы (в первоначальной версии), и при открытии редактора персонажа, каждый раз создавать новые поля со значениями из базы данных. Но чтобы мне додуматься до этого, мне потребовался примерно месяц, после чего я продолжил разработку.
Затем был добавлен поиск, теги (которые реализовываются через спец. генерацию и поля в моделях), и так далее.
Тёмная тема была добавлена без каких либо проблем, для этого в коде есть theme_provider. Для локализации я использовал подобную методику с использованием SharedPreferences (библиотека нужна для хранения настроек приложения и подгрузки данных) при каждой сессии.
Для нижней панели навигации я реализовал так: homepage - главный экран с навигацией внизу, а контент - это страницы, хранящиеся в List с типом данных Widget. В целом, ничего трудного нет.
Для горизонтальных экранов, виджет панели навигации я полностью перестраиваю.
UI на Flutter строится очень и очень легко. Какие то сложные виджеты я храню в отдельной директории в отдельных файлов и их просто вызываю в целях экономии не только строк на странице, но и ещё экономии памяти, использую тот же самый виджет, а не создавая новый. Подобная система у меня и с диалоговыми окнами.
Все вычисления у меня находятся в services, но и на страницах она так же есть, так как, например, генерации тегов не вижу смысла выносить в отдельную логику.
В заключении хочу сказать, что разработка на Flutter сильно упрощает работу, соеденяя интерфейс и логику работы приложения. Лично я написал CharacterBook за 5 месяцев, с нуля, при этом имея пока только начинающие навыки разработки ПО.

Спасибо всем, кто прочитал! Подобные статьи у меня первые в опыте, надеюсь понравилось:,)

Ссылка на репозиторий приложения: github.com/MaxGog/CharacterBook
Subscription levels2

Lite версия

$1.37 per month
🔹 Наброски и скетчи к артам
— Эскизы, черновые зарисовки, концепты будущих работ.
— Возможность увидеть процесс создания арта от начала до конца.
🔹Доступ к некоторым платным постам
— Часть контента из более дорогих подписок (но не весь).
— Возможно, ранний доступ к постам перед публикацией для всех.
— Урезанная версия эксклюзивных материалов

Deluxe версия

$6.9 per month
Deluxe-подписка на Boosty включает:
🔞 Полный доступ к NSFW-артам — эксклюзивный контент без цензуры.
💰 Все платные посты — никаких ограничений, включая WIP, скетчи и финальные работы.
🎨 Скидки на заказ артов — специальные условия для подписчиков этого тарифа.
✨ Экстра-контент — бонусные материалы, ранние доступы и персональные благодарности.
Идеально для тех, кто хочет максимум контента и привилегий! 🚀
Go up