Разработка на Flutter с нуля — мой опыт
Всем привет! Я сейчас являюсь студентом МАДИ, и учусь на инженера разработчика, тобишь того же программиста. Сейчас я на третьем курсе и хотел бы поделиться своим первым опытом в более менее осознанной разработке мобильных приложений, в данной статье именно на Flutter (хотя я поклонник .NET) :)
И так, давайте, пожалуй, начнём. Начал я разработку с того, что я в целом творческая личность, как и всё моё окружение. У меня и моих друзей есть достаточно много персонажей, в частности для D&D, различных историй и т.п. и появилась проблема: все персонажи прописано заотично, нет единой структуры, и кто сохраняет в docx-документ, кто в заметки, да и вообще местами делиться достаточно трудно... Ну, и я решил взять проблему в свои руки! Моя цель была: написать приложение для структуризированного хранения персонажей и лёгким способом делиться ими.
В 2023 году я ещё пытался всё реализовать на Xamarin, но зашёл в тупик, от чего разработку я на время отложил. Но в конце 2024 года, в универе нас познакомили с таким фреймворком, как Flutter.
Тогда, после создания учебного веб-приложения на этом фреймворке, было принято мною решение начать пробовать написать полноценное мобильное приложение. И как раз под руку мне попалось то решение проблемы, описанной выше, которую я забросил. Разработка началась заново.
Первым делом, надо быть сделать локальную базу данных. Она должна быть легковестной, быстрой и легко расширяемой. Мой выбор пал на Hive. Hive — это легкая и быстрая база данных NoSQL с ключевыми значениями, специально разработанная для Flutter. В реализации и пользования он был достаточно лёгким, от чего я на нём и остановился.
Первым делом нужно было просто наладить создание, редактирование и представление списка персонажей. За несколько недель (я ещё и работаю, по этому свободного времени у меня достаточно мало) я смог сделать прототип, но рабочий. Моим друзьям зашло и уже ждали результата. Хоть какого то :)
По этому я двинулся дальше. По запросу своих друзей добавлял нужные поля, новые таблицы базы данных, а вот дальше я столкнулся с первой проблемой - надо было как то реализовать возможность вводить свои поля с названиями, причём в «неограниченном количестве».
Как я решил это проблему? Так как у нас Hive с массивами строк работает не очень хорошо, я решил создать отдельно класс, который хранит в себе структуру собственных полей ввода (что-то вроде в Amino), а затем этот класс у нас сохраняется в базовой модели персонажа в виде List. Но ещё надо было это отобразить! Отображение я решил делать через циклы (в первоначальной версии), и при открытии редактора персонажа, каждый раз создавать новые поля со значениями из базы данных.
Но чтобы мне додуматься до этого, мне потребовался примерно месяц, после чего я продолжил разработку.
Затем был добавлен поиск, теги (которые реализовываются через спец. генерацию и поля в моделях), и так далее. Тёмная тема была добавлена без каких либо проблем, для этого в коде есть theme_provider. Для локализации я использовал подобную методику с использованием SharedPreferences (библиотека нужна для хранения настроек приложения и подгрузки данных) при каждой сессии.
Для нижней панели навигации я реализовал так: homepage - главный экран с навигацией внизу, а контент - это страницы, хранящиеся в List с типом данных Widget. В целом, ничего трудного нет. Для горизонтальных экранов, виджет панели навигации я полностью перестраиваю.
UI на Flutter строится очень и очень легко. Какие то сложные виджеты я храню в отдельной директории в отдельных файлов и их просто вызываю в целях экономии не только строк на странице, но и ещё экономии памяти, использую тот же самый виджет, а не создавая новый. Подобная система у меня и с диалоговыми окнами. Все вычисления у меня находятся в services, но и на страницах она так же есть, так как, например, генерации тегов не вижу смысла выносить в отдельную логику.
В заключении хочу сказать, что разработка на Flutter сильно упрощает работу, соеденяя интерфейс и логику работы приложения.
Спасибо всем, кто прочитал! Подобные статьи у меня первые в опыте:)
· 30.09.2025
А можно для старпера пояснительную? Эти персонажи, это вроде как скины раньше? Или сбор аватарок из разных соцсетей. Что за движуха? 🤓
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 02.10.2025
Это скриншоты ранних сборок приложения, чтобы увидеть, как приложение развивалось визуально😁 Ну и чтобы иметь представление, как сейчас выглядит приложение;)
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 02.10.2025
Приложение вижу,👁👁 🤠 для чего оно предназначено?
Нашёл, ковыряю. У меня герои в млбб, можно их сюда?
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 02.10.2025
Да, конечно! Это приложение, как заметки, но с удобной структуризацией именно для хранения различных персонажей. Удобно для писателей и ролевиков D&D:) Приложение не забрасываю и буду развивать дальше! Может что-то масштабное да выйдет...
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 02.10.2025
Создал расу, персонажа, а где другие все? 👀 Или только своих можно видеть? И как мне перенести из игры персонажа с его историей? 🤔
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 02.10.2025
Ну, дальше просто самостоятельно заполнять. Пока преимущество в том, что можно делиться персонажами с помощью одного файла, и ничего копировать и дополнительно дописывать не надо;)
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён