You are on page 1of 8

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ХАРКІВСЬКИЙ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ

Кафедра ШІ

Звіт

про виконання проєкту


з дисципліни «МІСТ»

Виконав:
ст. гр. ІТШІ-20-4
Кірюшин Володимир

Прийняв:
Стьопін О.С.

Харків 2022
1. Мета роботи:
Побудова крос-платформного застосунку за допомогою можливостей мов
Dart, Flutter.

2. Технічні вимоги:
- Крос-платформний застосунок
- Введення даних
- Вивід даних
- Наявність трьох вікон
- Завантаження даних з мережі, REST

3. Опис предметної галузі


На мою думку, відомі цитати – це уособлення всіх знань та досягнень людей,
які їх одного разу сказали. Звичайно, цитата не може навчити життю, адже це
просто слова, але правильний вислів, який підкріплений не аби яким сенсом,
може повністю змінити світогляд людини. Саме виходячи з таких роздумів, я
взяв за основу для проєкту предметну галузь – «Цитати відомих людей». У
мобільному додатку Phraser, я взяв за мету дати можливість кінцевому
користувачеві отримувати, зберігати та переглядати цитати відомих людей,
які можуть суттєво впливати на світогляд та життя цього юзера.

4. Хід роботи

4.1 Реалізація крос-платформності


Оскільки Flutter є кросплатформною мовою програмування, а саме
підтримує такі основні платформи як Web (Chrome у моєму випадку),
Windows, Linux, MacOs, Android та IOS, то ми маємо можливість запускати
скомпільований код на будь-яких з них. В цій роботі проводилося тестування
на платформах Web(Chrome) та Android (емулятор), що дозволяє
стверджувати крос-платформність.

4.2 Введення даних


Для функціоналу програми було створено пошукову стрічку , за
допомогою якої можна знайти всі цитати, за текстом чи автором, що може
бути дуже зручно в cитуації коли необхідно знайти цитату за ключовим
словом чи автором. Реалізація такої механіки (Рис. 1) досягається за
допомогою асинхронної роботи функцій зі станами сторінок. Такий пошук
доступний на двох з трьох сторінках.
Рисунок 1 – Реалізація пошуку в додатку

4.3 Виведення даних


Фактично, дані зберігаються та над ними здійснюються маніпуляції у
легкій внутрішній key-value базі даних написаній на «чистому» Дарті, Flutter
Hive. Завдяки швидкому доступу до даних(Рис. 2) ми отримуємо стрімкий
потік даних на вивід, в результаті якого цитати та фрази відображаються на
екрані в розділах «Quotes» та «Favorites».

Рисунок 2 – Реалізація пошуку улюблених цитат у базі даних


4.4 Три вікна (вкладки)
У моєму додатку реалізовано саме 3 вікна. Перше вікно (Рис.5) є
домашнім та використовується для оновлення стану додатку – пошуком
нової випадкової цитати. Також воно передає цю цитату далі в базу даних та
на вікно номер два. Друге вікно (Рис. 6) відповідає за виведення на екран всіх
цитат, які згенерував користувач. Також на ньому можна використати
функції видалення ( по одній цитаті за раз, або всі одразу), пошук та
додавання цитат в улюблені. На третьому вікні (Рис. 7) також присутній
пошук, видалення та перегляд улюблених цитат. Структура проєкту (Рис.3)
базується на бізнес-логіці (cubit), та візуальному представлені для кожної зі
сторінок.

Рисунок 3 – Структура основної частини проєкту


4.5 Завантаження даних з мережі, REST
Весь проєкт побудовано на використанні REST API для стягування
цитати з серверу з відкритим кодом, який надає інформацію щодо цитати, її
автора і так далі. Для проєкту було залучено створення десеріалізатора з
JSON до бази даних Hive. Також, використано метод GET з REST API
серверу і вилучено лише важливу для нас інформацію.

Рисунок 4 – Реалізація десеріалізації відповіді GET REST API


5. Приклади роботи програми (Рис. 5,6,7,8,9)

Рисунок 5 – Домашня сторінка

Рисунок 6 – Друга сторінка (основні цитати)


Рисунок 7 – Третя сторінка («улюблені» цитати)

Рисунок 8 – Реалізація додавання та видалення цитат з «улюблених»

Рисунок 9 – Результат роботи «логера» у debug-консолі


6. Висновки
У результаті виконання завдання було побудовано крос-платформний
додаток за допомогою методів мови Flutter та Dart. Це дало змогу глибше
понуритись у методології крос-платформного програмування, а також, на
певному рівні, опанувати різні бібліотеки відповідних мов, поглибити
навички з використання REST API, key-value бібліотек, побудування ООП-
архітектури, побудування UI для додатків і інше.

You might also like