Provider (Flutter) -очень простой пример работы с провайдером

Поділитися
Вставка
  • Опубліковано 16 січ 2025

КОМЕНТАРІ • 54

  • @stolets
    @stolets  Рік тому

    *Знаешь почему стоит пойти ко мне учиться?*
    *Не сложно!* 👇
    Я лично обучаю и делаю это «простым и доступным языком», тебе будет понятно всё что необходимо
    *Не долго!* 👇
    Ты легко освоишь навык разработки приложений всего за 2 месяца
    *Не дорого!* 👇
    Стоимость обучения в разы меньше по сравнению с остальными курсами Flutter (стоимость уточнить можно в ЛС)
    *Нужно немного твоего времени!* 👇
    Каждую субботу будет наш созвон в Zoom и всего на 2 часа (созвон всего лишь раз в неделю)
    *С домашним заданием!* 👇
    Ты будешь получать домашнее задание которое надо выполнить в течении недели и я лично буду проверять ДЗ и давать комментарий
    *С практикой!* 👇
    Ты сделаешь учебный проект и получишь задание делать свое собственное приложение
    *Не скучно!* 👇
    На созвоне я всегда всех призываю активничать и перебивать меня, я всегда хочу получать вопросы и тут же отвечать на них
    *Перспективно!* 👇
    Выпускников я зову на свой практикум, где мы вместе будем делать бизнес на приложениях (зарабатывать на продаже премиум подписках в приложениях)
    *Остались вопросы?* Ниже контакты, просто напиши мне!

    Telegram: t.me/stolets

    WhatsApp, Viber, SMS:
    +7 (908) 505-49-41

    +7 (908) 505-49-41

    +7 (908) 505-49-41

    (на обычный звонок не отвечаю, по причине частого спама)
    Vk: vk.com/stolets
    Instagram: instagram.com/sto_lets
    Email: ip.stolets@yandex ru

  • @ai-bloggers
    @ai-bloggers 2 роки тому +7

    Это пожалуй лучший урок по провайдеру. Спасибо, Дмитрий

  • @ergashev_uzb
    @ergashev_uzb 4 місяці тому +1

    Лучший урок по этой теме, который видел до этого

  • @merutation
    @merutation 2 роки тому +3

    Спасибо! Очень понятный и качественный видео урок. Читала несколько артиклей, особо не вникала в суть. А теперь стало все понятно. Продолжайте в том же духе🤩😊

  • @itpeople1573
    @itpeople1573 Рік тому +2

    шикарно доступно изложено

    • @stolets
      @stolets  Рік тому

      Благодарю!

  • @ai-bloggers
    @ai-bloggers 2 роки тому +1

    Что-то серьёзное начинается 🙂 Мощный урок. Спасибо, Дим.
    Пожалуй, я ещё раз пересмотрю

  • @bekzatzamirbekov3330
    @bekzatzamirbekov3330 2 роки тому +2

    ochen ponyatno bylo, stavlyu like i podpisku!!!

    • @stolets
      @stolets  2 роки тому +1

      Спасибо

  • @victordeynega6746
    @victordeynega6746 Рік тому

    Спасибо большое за урок, все очень понятно!!

  • @aldiyarualiyev
    @aldiyarualiyev 2 роки тому +2

    thanks man! god bless you!

  • @mvlikhachev
    @mvlikhachev 2 роки тому +2

    Лайк и коммент в поддержку канала)
    Сейчас появилась необходимость побыстрому разобраться в основах флаттера и видосы нормально зашли) Конечно сильно все упрощенно, но как я понял на этом и был акцент чтобы даже совсем начинающие разобрались что да как.

    • @stolets
      @stolets  2 роки тому

      Да, все именно так

    • @stolets
      @stolets  2 роки тому

      Спасибо!!

  • @richardrgb6086
    @richardrgb6086 Рік тому +1

    thank you✌

  • @pozharHAHAHAHAHA
    @pozharHAHAHAHAHA 2 роки тому +1

    от души за видео, продолжай в том же духе

  • @alexandrmakovkin7364
    @alexandrmakovkin7364 2 роки тому +4

    как получить конкретную переменную с одинаковым типом?
    List a = 1;
    List b = 2;

    • @stolets
      @stolets  2 роки тому +2

      Отличный вопрос. Насколько я понял, для провайдера необходимо иметь разные типы для каждого конкретного провайдера. Если есть одинаковые типы, он будет возвращать первый.
      Решить эту проблему можно легко, просто создать класс для отдельного вида данных. Но по логике, в провайдере лучше поставлять модели данных, отдельные классы.

    • @martindoriel6585
      @martindoriel6585 8 місяців тому

      ​@@stolets
      Provider(
      create: (context) =>[a,b], ...
      На другой странице:
      child: Text(${'Provider.of(context)[1]}'), ...
      Выведет значение b.
      Примет любой типизированный массив.
      На dynamic захлебнётся.

  • @peekors8829
    @peekors8829 2 роки тому +5

    Спасибо Дмитрий,ролик получился понятным. Можно вас попросить разобрать Riverpod. Я думаю многим это будет полезно т.к это Provider 2.0 на максималках

  • @eleimt
    @eleimt 2 роки тому +1

    Подскажите пожалуйста, планируется ли видео о скролле?

    • @stolets
      @stolets  2 роки тому

      Отдельно нет. А что за вопрос у вас?

    • @eleimt
      @eleimt 2 роки тому +1

      @@stolets Пока не пойму как правильно организовывать стр. с несколькими горизонтальными скролами, при этом что бы скролился весь экран.

    • @stolets
      @stolets  2 роки тому +1

      @@eleimt почитай про SingleChildScrollView виджет и его параметры

  • @Unrealchik
    @Unrealchik 2 роки тому +1

    Спасибо за ясный пример :) Если мы хотим вернуться к предыдущим экранам по навигации, восстанавливая отображаемые данные (в полях ввода, например), нужно использовать только провайдер?

  • @ffonlfoff5005
    @ffonlfoff5005 2 роки тому +1

    Привет, а если я хочу два инта пробросить, то как получать именно тот инт, который мне нужен?

    • @stolets
      @stolets  2 роки тому +1

      Провайдить не инт, а класс

    • @compas013
      @compas013 Рік тому

      @@stolets но получается, что если мы в класс запихнем 50 переменных int и будем провайдить класс, то при изменении любой переменной внутри класса будут срабатывать все ребилды, связанные со всеми этими переменными... А это не выглядит оптимально... Я правильно понимаю?

  • @АлександрБезденежных-р5л

    Получается что нотифайлистенер обновляет виджет хомескрин, а не виджет текст непосредственно?

    • @stolets
      @stolets  2 роки тому

      Если правильно понял ваш вопрос, то да. Именно весь виджет homescreen

    • @АлександрБезденежных-р5л
      @АлександрБезденежных-р5л 2 роки тому

      @@stolets по хорошему для изменяемых элементов нужно создавать отдельный виджет, как пример виджет сердечка like, что бы при изменении не перерисовывать всю странцу(либо виджет айтема( товара)), а только виджет не посредственно с сердечком

    • @stolets
      @stolets  2 роки тому

      @@АлександрБезденежных-р5л похоже я был не прав. Провайдер обновляет именно там где передается данная

    • @АлександрБезденежных-р5л
      @АлександрБезденежных-р5л 2 роки тому

      @@stolets ну судя по видео скорее всего хомескрин обновляется, а не виджет текст, так как сначала ты напрямую прописал вызов в чилд текста, а потом вынес в переменную, результат не изменился, исходя из этого делаем вывод что все таки обновляется тот виджет где мы обращаемся к провайдеру

  • @ai-bloggers
    @ai-bloggers 2 роки тому +1

    Получается, что мы на одной странице что-то нажимаем, а на другой это появляется

  • @JustADevGuy
    @JustADevGuy 7 місяців тому

    В данном примере при нажатии на кнопку изменения температуры перерисовывается весь виджет страницы. Было бы правильней поместить context.watch() и Text в Builder, чтобы перерисовывался только сам Text со значением температуры:
    Builder(
    builder: (context) {
    final temp = context.watch();
    return Text(
    temp.temperature.toString(),
    style: Theme.of(context).textTheme.headlineMedium,
    );
    },
    ),

  • @Polite_person_
    @Polite_person_ 2 роки тому

    А для чего тогда блок нужен, раз тут так все прекрасно?

  • @Dustystec
    @Dustystec 2 роки тому +1

    Продолжайте пожалуйста

    • @stolets
      @stolets  2 роки тому

      Буду продолжать) спасибо

  • @elkaigolka7349
    @elkaigolka7349 2 роки тому +2

    Привет!
    Сделай пожалуйста выпуск про cubit. И если будет время, то с api было бы супер

    • @stolets
      @stolets  2 роки тому

      Хорошо. Запишу в задачи)

    • @elkaigolka7349
      @elkaigolka7349 2 роки тому

      @@stolets имел ввиду не отдельно тему с api, а cubit+api. Очень жду выпуска!!!

    • @stolets
      @stolets  2 роки тому

      @@elkaigolka7349 я так и понял)

  • @crazy-man
    @crazy-man 2 роки тому +1

    Да, круто все разжовано , для меня конечно как постоянно юсера. Getx выглядит как getx. только длиннее синиакс

  • @Anatoly555
    @Anatoly555 8 місяців тому

    Если провайдер - это только поставщик, то есть, класс, посредством которого "прокидываются" данные, то что мешает объявить глобальную переменную, в которую внести все нужные для передачи данные и получить их в любом другом модуле, в любом другом классе, не заморачиваясь с многострочными вызовами чтения тех же глобальных данных?

    • @stolets
      @stolets  8 місяців тому

      Попробуйте так сделать как предлагаете и сразу увидите ограничения

    • @Anatoly555
      @Anatoly555 8 місяців тому

      @@stolets , всегда так и делаю, провайдер и прочие инхериты нужны только для оптимизации рендеринга, разве не так?

  • @bulsond
    @bulsond 2 роки тому

    Provider не нужен. Есть встроенные во флаттер InheritedWidget и InheritedNotifier. Почему народ не желает изучить как следует сам флаттер и его возможности, а сразу спрыгивает на сторонние пакеты? Удивительно!

    • @DartMitai
      @DartMitai 2 роки тому

      хороший вопрос

    • @dan.gorbunov
      @dan.gorbunov 2 роки тому

      @@DartMitai Те кто берет на работу просят именно пакеты, уж не знаю почему))

    • @heorhiizaichenko3333
      @heorhiizaichenko3333 2 роки тому

      Сложную, масштабируемую бизнес логику очень сложно сделать на provider-е, не говоря уже даже о InheritedWidget.
      Знать как это работает безусловно стоит, но поверьте, знать хотя бы парочку популярных пекеджей вроде BLoC-а - обязательно.

    • @aleksandrsviridenko5079
      @aleksandrsviridenko5079 Рік тому

      Поправьте меня если я не прав, но ведь Инхеритед требуют писать больше кода, а готовый пакет Провайдер позволяет уменьшить количество символов, что повышает уровень читаемости , разве нет? Я так понял провайдер сам внутри работает на Инхеритед виджетах, так что не особо понятно зачем лишний раз писать много строк. Как работать знать надо конечно же

    • @bulsond
      @bulsond Рік тому +2

      @@aleksandrsviridenko5079 Я вам объясню почему я написал такой комментарий.
      Этот цикл уроков расчитан на начинающих. Провокационное заявление сделано для привлечения пытливых умом разработчиков, чтобы они не торопились, и как следует изучили доступный инструментарий самого флаттера.
      Понятное дело, что готовый пакет ускоряет разработку, только вот большинство поторопившихся даже не догадывается, что же там "под капотом" у провайдера и на чем основана его работа.
      По поводу уменьшения символов в коде: разберитесь с ООП и организуйте свой код так, чтобы он работал через взаимодействие компактых легко тестируемых объектов.

  • @denischikita
    @denischikita Рік тому

    Абсолютно не читаемо Provider.of(context)[1]. Просто жесть