Flutter Bloc [основы #3] context.read(), context.watch(), context.select()

Поделиться
HTML-код
  • Опубликовано: 21 янв 2025

Комментарии • 27

  • @rus_dos
    @rus_dos 2 года назад +3

    У вас Дар преподнести информацию коротко и ясно, к тому именно то что нужно. Продолжайте пожалуйста в том же духе.

    • @it_dev
      @it_dev  2 года назад +2

      поднял мне чсв)) ахах. пасиб

  • @edgara8858
    @edgara8858 2 года назад +3

    Лучшее объяснение блока

    • @it_dev
      @it_dev  2 года назад +2

      спасиб) приятно)

  • @ЛенаЛутченко-л4ф
    @ЛенаЛутченко-л4ф 2 года назад

    Красавчик👍 очень полезное видео, спасибо🤩

  • @shohzodlord
    @shohzodlord 11 месяцев назад

    Гений. Спасибо большое.

  • @МаксимСеверенко-й7е
    @МаксимСеверенко-й7е 9 месяцев назад

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

    • @it_dev
      @it_dev  9 месяцев назад +2

      суть любой архитектуры, разделить логику. ui не должно пересекаться с бизнес логикой, это как аксиома. но нет придела дроблению, если ты используешь 1 глобальный класс(виджет) который управляет сотней страниц, то такой код будет сложно поддерживать, а особенно если его колупаешь не только ты а еще 10 человек, и каждый пишет как хочет. у тебя появляется сотня функций в 1 файле, из них например 60 зависят от других функция а они от других. сложно понять на словах, но поверь когда 1 файл 10к строк, ты захочешь бросить эту профессию быстрее чем решить мелкий баг.
      и получается что стейт менеджер добвляет 1 абстракцию(которую ты можешь делить) на другие абстракции. наверное запишу видео, бо очень много есть чего сказать на этот счет

  • @dnnd1206
    @dnnd1206 Год назад

    3:09 Только с третьего раза понял, что это действительно у него)))

  • @nomadgari
    @nomadgari Год назад

    что-то не понял, а продолжение про buildWhen где-то потерялось? начал про buildWhen и резко все стер и поехали дальше (

    • @it_dev
      @it_dev  Год назад

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

  • @deniszavrin6927
    @deniszavrin6927 2 года назад

    Спасибо)

  • @aleksandrsviridenko5079
    @aleksandrsviridenko5079 Год назад +2

    автор как будто бежал куда-то, быстро очень.

  • @evgeniydoronin
    @evgeniydoronin 2 года назад +1

    Спасибо! Сделайте плиз крупнее шрифт, на 13'' ноуте очень все мелко((

  • @ЕвгенияМочалина-р5г

    Привет! спасибо за понятное и интересное объяснение! Я вот думаю BlocProvider.of(context) и context.read() не одно и тоже? если нет, то в чем разница?)

  • @elgariusanimationstudio891
    @elgariusanimationstudio891 2 года назад

    Спасибо за урок!👍 1) А можно будет сделать урок с примером ListView.builder как отображать данные из List. 2) Ну и как сохранять небольшие данные на телефон как выбор цвета шрифтов. Очень был бы благодарен, а то что-то весь RUclips перерыл так и не понял как это все с BLoC делается.🙃

    • @it_dev
      @it_dev  2 года назад

      Привет. опиши плиз подробнее, что нужно сделать. а то я все не совсем понял

    • @it_dev
      @it_dev  2 года назад +1

      Привет. Думаю ты уже и сам понял как, но все же отпишу)
      1. для сохранения текстовых данных, можно пользоваться p - pub.dev/packages/flutter_secure_storage
      для сохранения картинок и тд - pub.dev/packages/gallery_saver или юзать нативные стредства, но для этого нужно уже пилить видик.
      2. по поводу вывода списка через ListView - код ниже. Но учти в этом примере мы не зависим от высоты, у нас весь наш виджет занимает 100% Если ты захочешь выводить ListView где-то внутри остальной верстки, тебе нужно будет либо задать ему роазмеры, с помощю других виджетов (Container, SizedBox ...), или же обернуть в Expanded если это будет возможно. Более подробно нужно так же пилить видео. Или искать лучше) думаю такое точно есть)
      import 'package:flutter/material.dart';
      void main() {
      runApp(MyApp());
      }
      class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
      return MaterialApp(
      home: Scaffold(
      body: MyWidget(),
      ),
      );
      }
      }
      final users = [
      {'id': 1, 'title': 'Andry'},
      {'id': 2, 'title': 'Artem'},
      {'id': 3, 'title': 'Danon'},
      ];
      class MyWidget extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
      return ListView.builder(
      itemBuilder: (context, index) {
      return Text(
      users[index]['title'].toString(),
      );
      },
      itemCount: users.length,
      );
      }
      }

    • @elgariusanimationstudio891
      @elgariusanimationstudio891 2 года назад

      @@it_dev Увы я сам не понял. Мне еще далековато до тебя. Спасибо за быстрый ответ. Попробую попробовать 😉

  • @readmeandanswer8142
    @readmeandanswer8142 7 месяцев назад +1

    Почему нельзя юзать глобально context.read внутри Builder? "потому что.. еее.. листенер false... еее.. разрабы не рекомендуют потому что..еее.. какие-то проблемы возникнут... еее" *сам не знаю какие*
    на 7:28 зачем мне использовать context.watch когда вон у меня передается state? builder (context, state)? можно нормально обьяснить зачем?
    Да и к тому же про context.watch вообще внятного ничего не обьяснил: "ну смотрите вот он есть... но.еее у нас есть проблема что наш брейк поинт отрабатывает и на юзерах, а не только на работе, что по логике не должно быть." И ЧТО? ты можешь внятно обьяснить зачем context.watch нужен, а не показать что он есть, но он создает проблему и пойти дальше к context.select? как кто-то должен понять для чего его использовать? в конце видео когда вынес context.watch на самый верх опять показал как из-за него ребилдятся все виджеты и "нам это не нужно", а для чего он нам нужен? А в конце так вообще использовал BlocProvider.of чтобы все работало так как нам нужно. А для чего вообще ты все это показывал? ты так выбесил если честно этим уроком.

    • @it_dev
      @it_dev  6 месяцев назад +1

      та за шо. потому что слушать надо в контексте а не 5 минут ебланю, 5 минут слушаю.
      видео мне впадлу пересматривать. так что пишу по памяти.
      1. "Почему нельзя юзать глобально context.read внутри Builder" не сработает в нашем случае. потому что листенер отключен, и мы получим просто блок, без подписки на стейт.
      2. "зачем мне использовать context.watch когда вон у меня передается state? builder" а тебя не смущает, что там стейт Counter блока, а watch у нас следит за User блоком?
      3. (зачем я рассказывал о всех этих методах) потому что видео о них, и о том, что они могут. а не о том как решить конкретную проблему.
      watch - чтобы получить подписку на весь стейт
      select - чтобы получить подписку на определенную переменную в стейте
      read - чтобы получить блок, и его стейт на момент вызова read.

    • @readmeandanswer8142
      @readmeandanswer8142 6 месяцев назад

      @@it_dev я смотрел видео 5 раз чтобы попытаться вникнуть, но мое сообщение говорит о том что в видео не хватает информации, ты что-то пытаешься расказать по памяти, соскиваешь с темы, недоговариваешь, пересмотри свой урок еще раз, ты ничего нормально не обьяснил.

    • @readmeandanswer8142
      @readmeandanswer8142 6 месяцев назад

      @@it_dev ты постоянно перескакивал с context.watch на что-то другое внятно не обьяснив зачем он нужен, и когда его использовал. Каждый раз придумывал проблему его не использовать и ни разу решение когда оно нужно.

    • @Nixguy
      @Nixguy 3 месяца назад

      Не могу не согласиться. Не сказано ничего о том, какую проблему решают watch, select и read. Просто так эти методы не стали бы создавать, видимо, они для чего-то нужны. Но из видео, я сделал вывод, что их вообще луше не использовать.

    • @readmeandanswer8142
      @readmeandanswer8142 3 месяца назад

      @@Nixguy "Не сказано ничего о том, какую проблему решают watch, select и read" совершенно верно, это видео можно смело заносить в топ худших видео по программированию. Мне гораздо понятнее было как школьник на ассемблере чавкая в микрофон создавал программу которая выводит hello world

  • @dzianishrip5139
    @dzianishrip5139 2 года назад +1

    Круто, но почему в этой технологии сначала 10 кривых/некрасивых варианта вы объясняете, а потом в конце - а вот как будет правильно! Так может просто сразу рассказать как правильно делать??

    • @it_dev
      @it_dev  2 года назад +2

      В этом и суть. показать как можно. но в данном кэйсе не надо