Flutter уроки | #13 - Продвинутая работа с JSON json_serializable | Курс с нуля для новичков 2023

Sdílet
Vložit
  • čas přidán 27. 07. 2024
  • 😎 Репозиторий с кодом из уроков: github.com/Frezyx/flutter_tut...
    Ссылки из видео:
    ⬇️ Пакет Json Serializable pub.dev/packages/json_seriali...
    ⬇️ Пакет Json Annotation pub.dev/packages/json_annotation
    Команда для запуска генерации
    flutter pub run build_runner build --delete-conflicting-outputs
    ✅ Полезные ссылки:
    👨‍💻 Мой GitHub github.com/Frezyx (Куча кода на dart / Flutter)
    💬 Telegram с анонсами t.me/frezycode
    🚀 Boosty boosty.to/frezycode
    📸 Instagram / frezycode
    Flutter - это идеальный инструмент, чтобы начать путь в айти или перейти на него в 2023. А я как раз тот самый коуч, которого ты искал.
    В этом уроке мы ненадолго вернемся к работе с http запросами и dio в приложении. А конкретно изучим как генерировать сериализацию (serialization) и десериализацию (deserialization) в проектах на Flutter используя пакеты json_serializable, json_annotation и build_runner.
    Генерация кода позволяет разработчикам тратить в разы меньше времени на написание рутинных и однотипных процессов в своих приложениях.
    Изучим анyотации и как работает генерация кода в Flutter проектах.
    А так же немного поговорим про архитектуру нашего репозитория.
    В ходе курса, мы вместе разберемся с тем, что такое Flutter и как на нем сделать первое приложение. Научимся программировать на dart, узнаем про основные виджеты в Flutter, как работать с сетью http dio, узнаем про основной стейт менеджемнт в Flutter - BLoC.
    00:00 - 00:08 Вступление
    00:08 - 00:23 Что будет в этом уроке
    00:23 - 00:46 Как в Flutter проектах делают сериализацию openAPI
    00:46 - 01:26 Для чего нужны json_annotation и json_serializable
    01:26 - 01:59 В чем плюсы генерации json сериализаторов
    01:59 - 02:31 Устанавливаем пакет json_annotation
    02:31 - 03:16 Что такое dev_dependency в flutter проекте
    03:16 - 04:04 Про пакет build_runner
    04:04 - 07:12 Обновляем модели проекта для удобной сериализации
    07:12 - 07:33 Аннотация JsonSerializable()
    07:33 - 08:26 Чем отличаются генерируемые файлы. Точка G
    08:26 - 09:57 Генерация методов сериализации моделей
    09:57 - 12:25 Запускаем генерацию
    12:25 - 15:22 Меняем название полей json генерируемой модели JsonKey
    15:22 - 21:09 Используем новую сериализацию в методах репозитория
    21:09 - 21:43 Запускаем проект и получаем ошибку сериализации
    21:43 - 22:37 Про формат ISO Date
    22:37 - 26:37 Пишем кастомный сериализатор toJson fromJson для Даты
    26:37 - 28:52 Исправляем ошибку с картинками
    28:52 - 29:43 Смотрим насколько приятнее стал наш код
    29:43 - 30:59 Особенности работы с данными из API
    30:59 - 31:51 Чем обычно отличается работа со списками и с одной моделью из АПИ
    31:51 - 32:40 Итоги урока
    #войтивайти #программирование #flutter
  • Věda a technologie

Komentáře • 30

  • @CuJ1bBEP
    @CuJ1bBEP Před 6 měsíci +5

    Смотрю в 2024 году. Круто, очень помогает в изучении!

  • @inevitable00
    @inevitable00 Před rokem +2

    Спасибо! Огонь урок, как всегда! Круто что столько интересных кейсов попалось и что в конце ты сказал про избыточность API

    • @frezycode
      @frezycode  Před rokem +1

      Сам очень рад что интересный кейс попался) Надеюсь это не было сложно для начинающих.

  • @shirayot8672
    @shirayot8672 Před měsícem

    По какой-то невероятной причине на большом экране вообще не даёт открыть написание комментариев.
    А я на бусти просто подписалась, там ещё и помогут в чате. Видео огонь, комментарий для алгоритм ов ютуба. 😂

  • @Sviatopetrivske_music
    @Sviatopetrivske_music Před rokem +3

    Спасибо за работу!!! Очень круто!!!

  • @masli1337
    @masli1337 Před rokem +3

    Привет братанчик, случайно наткнулся на твой канал, просмотрел все ролики за 3 дня так как уже знаю флаттер более менее, много чего узнал нового, а многое повторил. Хотелось поблагодарить тебя, что объясняешь все очень понятно и круто, и хочется узнать больше про firebase, про архитектуру больших проектов (типа clean arch) и про написание тестов. Возможно про другие полезные библиотеки и хорошие практики написания))

    • @frezycode
      @frezycode  Před rokem +1

      Спасибо большое за такой фидбек. Услышал пожелания ✅

  • @user-zz4uj1mr5f
    @user-zz4uj1mr5f Před 7 měsíci

    Спасибо. Я напоролся на одну ошибку с потерей данных, но оказалось что я просто написал лишнюю букву в аннотациях json. Короче если у вас такая же проблема для тех кто читает - аннотации должны быть прописаны строго для поиска по полям сайта, ошибетесь хоть на буковку как я - все пойдет в тар тарары. У меня вообще комп завис пришлось его вырубать кнопкой из за зависания дебагера. Хорошо хоть логи сделали из прошлого урока так бы я вообще не понял где проблема.

  • @asyllme
    @asyllme Před rokem +1

    привет, пожалуйста снимите про auto_route, авторизация и регистрация через bloc

    • @frezycode
      @frezycode  Před rokem +2

      Auto route будет обязательно 😌
      Про авторизацию долго говорить.
      Будет уже наверное не в рамках курса.

  • @a6blp
    @a6blp Před 4 měsíci

    dart: - я рефлексии не чувствую!
    google: - у тебя её нет!
    столько возни с каждой ДТОшкой, и этим реально пользуются в больших проектах?

    • @frezycode
      @frezycode  Před 4 měsíci +1

      У дарта рефлексия есть, а вот у флатера ее нет, и не просто так. Как по мне, возня оправдана полностью. Рефлексия - игрушка дьявола в неопытных руках

    • @a6blp
      @a6blp Před 4 měsíci

      @@frezycode Понял. Спасибо за курс уроков. Вот реально, посмотрел, потом за "пару вечеров", набросал кальку с фронта на реакте, просто чтоб попробовать, как оно.

  • @aevs3713
    @aevs3713 Před rokem +1

    Стас, а использование допустим quicktype чем хуже будет?

    • @frezycode
      @frezycode  Před rokem +1

      Привет! Подобные генераторы можно использовать. Это удобно. Но такой код хранится как часть вашего изменяемого кода. Это означает что любой программист из команды может зайти и что-то поменять в сериализации моделей на свое усмотрение.
      Это может приводить к неожиданным ошибкам, особенно если в проекте вы не пишете тесты.
      Генерация через аннотации защищает ваш проект от подобных ошибок и делает ваш код более определеным и предсказуемым.

  • @arthurlokhov6856
    @arthurlokhov6856 Před rokem +2

    Привет. Как думаешь будет ли актуальна кросс платформа и собственно сам flutter. Ведь вполне вероятно, что ios у нас рано или поздно вообще перестанет работать. И приложения надо будет писать лишь под Андроид. Стоит ли учить flutter или лучше нативный Android? Просто flutter мне нравится больше, а уверенности насчёт его нету.

    • @frezycode
      @frezycode  Před rokem +1

      Привет 👋
      Даже если перестанет работать, что очень маловероятно, все равно потом будет работать. Айос - это почти половина рынка, поэтому я совершенно не думаю о таком исходе.
      Но даже если все будет так плачевно , Flutter ведь не только про Android и iOS. Он в этом плане гораздо мощнее и умеет так же собираться под Windows, macOS, Linux, Web. Да, пока на рынке мало кто использует Flutter в этих целях. Но тут я считаю нужно немного подождать. Мы в ForestVPN уже удачно затащили macOS клиент на flutter. Так же я знаю несколько проектов в России, которые делают веб приложения на Flutter.
      Короче говоря, бояться тут не о чем)

    • @skyonavelight2221
      @skyonavelight2221 Před rokem +1

      @@frezycode Ну с половиной рынка ты перегнул, по факту это %20~

  • @user-og3jn9ev3f
    @user-og3jn9ev3f Před rokem +1

    Стас с firebase работали?

    • @frezycode
      @frezycode  Před rokem +1

      Да и в курсе есть урок про инициализацию.

    • @user-og3jn9ev3f
      @user-og3jn9ev3f Před rokem +1

      @@frezycode не могу прописать ключ sha-1. Что может быть? Уже упарился лазить по стаковерфло

  • @BobbyDigital_X
    @BobbyDigital_X Před 6 měsíci

    Подскажи что лучше и перспективнее котлин или дартс флатер ?

    • @frezycode
      @frezycode  Před 6 měsíci

      Сравнивать язык и фреймворк было бы не корректно. Ты имеешь ввиду сравнение нативной разработки под андроид и Flutter ?

    • @BobbyDigital_X
      @BobbyDigital_X Před 6 měsíci

      @@frezycode думаю что бы начать учить, на чем сконцентрироваться Котлин или дарт и флаттер или c++ и qt, так как сейчас аврора будет на нем и это там native language. 3 варианта и не как не решу 🥴 дарт и флаттер некоторые утверждают что отомрет, Котлин кмм его задавит, а с++ и qt аврора будет востребована сейчас. Пока начал изучать дарт и пока нравится

    • @frezycode
      @frezycode  Před 6 měsíci

      @@BobbyDigital_X ну вот этих «экспертов» Android блоггеров по поводу «задавит» я бы точно не слушал, это слишком субъективная позиция человека, который топит за свою технологию

    • @frezycode
      @frezycode  Před 6 měsíci

      @@BobbyDigital_X и Kotlin и dart + Flutter имеют множество плюсов и минусов, и перспективы у технологий тоже есть. Просто довольно в разных направлениях. Лучше выбирать тебе самому на основе того, что тебе больше понравится. И никто не запрещает пользоваться сразу двумя технологиями

  • @user-zb1cz4ji5g
    @user-zb1cz4ji5g Před měsícem

    чет я в шоке какой гемор это делать в дарте, тонны кода чтобы сделать простую операцию

    • @frezycode
      @frezycode  Před měsícem

      В 3.4 подъехали макросы, так что скоро будут полноценные data-классы, посмотри Обзор Flutter 3.22 на моем канале

    • @user-zb1cz4ji5g
      @user-zb1cz4ji5g Před měsícem

      @@frezycode да да, я смотрел, но если я ничего не напутал они в 3.5 только разрешили этим пользоваться🥲
      из доки
      "make sure you have Dart version 3.5.0-152 or later."

    • @user-zb1cz4ji5g
      @user-zb1cz4ji5g Před měsícem

      @@frezycode в 3.5 судя по документации(