Jetpack Compose. Основы. State [Ru, Kotlin\Android]

Поділитися
Вставка
  • Опубліковано 2 жов 2024

КОМЕНТАРІ • 89

  • @MobileDeveloper
    @MobileDeveloper  3 роки тому +5

    Ссылки на гитхаб по заданию кидаем в комментарии.
    Ссылка на само задание - docs.google.com/document/d/1XiNfo4pGc5VT1e-88bU7JB23IxE3QAmVOovgFT7FSwA/edit?usp=sharing

  • @ВладимирКудинов-т2т
    @ВладимирКудинов-т2т 2 роки тому +40

    Когда Андроид запускали, нам рассказывали как это классно разделять код и UI, а через 10 лет говорят - смотрите как классно - и код и UI в одном месте...

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

      Слышал много раз такое, но я вот допустим всегда бомбил с этого xml потому что как по мне это всегда нелогично и меня дико бесило, что кодом это так сложно делается, поэтому я юзал xml

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

      еще лет 10 и всё опять будем пилить в одной активити - и верстку и запросы на бек...

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

      @@paulsoja2732 какая активити... ФУНКЦИИ!

  • @АлександрАндреевич-я5б
    @АлександрАндреевич-я5б 11 місяців тому

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

  • @AndrewBlack-th3gk
    @AndrewBlack-th3gk 3 роки тому +5

    Как же ты хорош! Счастья, здоровья, много лайков и подписчиков!

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

    Годнота! Я так понимаю, что Jetpack Compose - это как реакт, только для котлин?)))

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

    Спасибо за материал! С предвкушением жду Июль, когда Compose выйдет в Release!

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

    Чёт как-то всё позапутано в этом видео...

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      🤷‍♂️🤷‍♂️

    • @RasM24
      @RasM24 3 роки тому +3

      На самом деле не запутано, а все понятно)
      Проблема в том, что ломается в принципе мышление, когда начинаешь писать на compose.
      Нельзя compose изучать итеративно, как это было с любым другим инструментом или подходом. Даже MVI можно изучить итеративно.
      С Jetpack Compose сначала надо забыть ВСЕ что ты знал об верстке через xml. Вообще все.
      А потом прям с 0 изучаешь, как строить экраны с новым подходом.
      Кстати чувствуешь себя в этот момент как джун) Непонятно что происходит, непонятно как надо писать... А иногда непонятно - а почему написанное тобой вообще работает.

    • @RasM24
      @RasM24 3 роки тому

      @@mishaeliseev они похожи только направлением :)
      И названия похожие некоторые)

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

      @@RasM24 почему забыть? Его можно встраивать в xml . Зачем? Ну, если проект большой и сразу ее перевести все

  • @RomanBass-v1h
    @RomanBass-v1h 2 роки тому

    Спасибо большое. Было очень полезно посмотреть. Поолучил ответ на интересующий вопрос и появился новый вопрос.
    На 24:40 Вы говорите, что можно создать ViewModel прямо в композабл-функции и эта модель не будет пересоздаваться при рекомпоузе. А у меня так не работает. Пришлось вынести создание модели выше и передать её в композабл-функцию. В чём может быть косяк?

  • @thoughtfulduck7433
    @thoughtfulduck7433 3 роки тому +1

    Отличное видео!. Интересно было бы посмотреть материал по android ui/unit тестированию. Было такое на канале или может есть в планах?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Пока нет, готовлю сценарий

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

    Спасибо за видео.Коммент в поддержку!

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

    Интересная штука. Когда делаю пример с LoveData, то при первом клике значение меняется, а при втором, оно скидывается к начальному

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

      Я не что и как тут работает, но знаю одно. В параметрах функции MainScreen должно быть viewModel: MainViewModel = viewModel(), а не viewModel: MainViewModel = MainViewModel(). Если сделать присвоение MainViewModel, а не viewModel(), то работать не будет. У меня по крайней мере так.

  • @homie2417
    @homie2417 3 роки тому

    Привет. Дай, пожалуйста, ссылку на mview архитектуру, если я правильно расслышал?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      MVI? Можно посмотреть пример тут - github.com/AlexGladkov/JetpackComposeDemo
      Но это не единственный пример реализации

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

    Спасибо за видео! Как веб-разработчику, очень напомнило реакт, даже захотелось котлин изучить, посмотреть как оно там у вас)

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

    Очень круто, спасибо за объяснения)

  • @asp424
    @asp424 3 роки тому

    Давно хотел менять текст лайвдатой. Но боялся, что засмеют. Теперь это легально)

  • @АнтонКулибякин
    @АнтонКулибякин 3 роки тому

    Ну наконец то дождались !

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

    Круто, спасибо!

  • @d.mertsalov
    @d.mertsalov 3 роки тому

    Спасибо!

  • @sergeyo.1512
    @sergeyo.1512 3 роки тому

    А что там за новый паттерн архитектуры?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Ну он не новый в абсолютном значении . Насколько я помню, я имел ввиду, что всякие TEA, MVU не очень распространены были в андроиде

  • @maksonic_official
    @maksonic_official 3 роки тому

    Ох ох ох( сколько теперь нового учить...

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Бедные Джуны как я люблю повторять

  • @sergeyo.1512
    @sergeyo.1512 3 роки тому

    Из примеров гугла, можно увидеть что просто встать дебагером на начало функции это не вариант , видимо как и с корутинами функция разбивается на стейты
    Column {
    // this will recompose when [header] changes, but not when [names] changes
    Text(header, style = MaterialTheme.typography.h5)
    Divider()
    // LazyColumn is the Compose version of a RecyclerView.
    // The lambda passed to items() is similar to a RecyclerView.ViewHolder.
    LazyColumn {
    items(names) { name ->
    // When an item's [name] updates, the adapter for that item
    // will recompose. This will not recompose when [header] changes
    NamePickerItem(name, onNameClicked)
    }
    }
    }
    }

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

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

    • @sergeyo.1512
      @sergeyo.1512 3 роки тому

      @@MobileDeveloper Я как то тоже озаботился. Хотелось чего то автоматического, что бы с одной стороны не писать вручную, с другой не засорять код классов логированием. Надежда была на написание плагина на poet, но в процессе поисков я вышел на АОП. С хорошими такими костылями удалось aspectJ прикрутить к котлину, причем в формате flavor. Теперь для логирования всех обращений к методам и свойствам класса достаточно пометить класс аннотацией @Log, причем для релиза аннатацию убирать не надо, просто меняем flavor, и плагин отключается. Это просто какой то совершенно другой левел.

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      @@sergeyo.1512 Не хотите об этом рассказать?) Готов предоставить площадку. Если есть желание напишите, пожалуйста, мне в Telegram - @neuradev

  • @maxsimpleapps
    @maxsimpleapps 3 роки тому

    Спасибо!

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Спасибо огромное за поддержку!

  • @bolnoi8
    @bolnoi8 3 роки тому

    А что с внедрением зависимостей во вью модель?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Про хилт будет отдельное видео.

  • @itjewels3436
    @itjewels3436 3 роки тому

    почему так мало подписчиков???

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Сам удивляюсь ) наверное мало людей рекомендуют мой канал ))

  • @idnull8434
    @idnull8434 3 роки тому

    А у меня импорт remember не работает приходится менять на * и всё работает.

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Да сорри забыл указать импорты. Там можно ручками ещё прописать ну либо звёздочку сделать. Надеюсь пофиксят в ближайших релизах

    • @RasM24
      @RasM24 3 роки тому

      Есть ещё решение)
      import androidx.compose.runtime.setValue
      import androidx.compose.runtime.getValue
      Я не разбирался зачем эти импорты нужны в работе, возможно с делегатами конфликт, или ещё что.
      Но чуть в том, что они автоматически не импортируются, и поэтому не может собраться.
      Собственно через * поэтому и запускается)

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Да да вот я про них ) спасибо )

  • @skotch_izolentovich
    @skotch_izolentovich 3 роки тому

    Привет, а есть ли какой-нибудь дедлайн для работы?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Нет, как наберется какое-то вменяемое количество работ (хотя бы штук 5-6) устрою разбор

    • @skotch_izolentovich
      @skotch_izolentovich 3 роки тому

      ​@@MobileDeveloper Спасибо за ответ.

  • @АсланКартоев-ф6д
    @АсланКартоев-ф6д 3 роки тому

    Автор, стоит ли изучать разработку под Android сразу с котлина? Или ж обязательно начать нужно с java?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Скоро выйдет видео на эту тему, если вкратце, то Kotlin

    • @luckytima2315
      @luckytima2315 3 роки тому

      @@MobileDeveloper так в вакансиях везде пишут,что надо java ,дурацкий легаси (((

    • @Trecoolerok
      @Trecoolerok 3 роки тому

      @@luckytima2315 имхо джаву знать нужно не только потому, что легаси, а потому что котлин на джвм работает. Ну и исходники андроида, в конце концов, вы даже не посмотрите, если что не так.

  • @asp424
    @asp424 3 роки тому

    1:00 А так разве можно находить viewModel?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Вообще нет, но видео не об этом )

    • @asp424
      @asp424 3 роки тому

      @@MobileDeveloper блин, начал писать новое приложение на compose. Как же это круто! Так просто всё, удобно!

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

      @@asp424 это hello world приложение?

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

      @@sanek1985t нет

  • @stanislavbatura771
    @stanislavbatura771 3 роки тому

    Спасибо все очень подробно. Появился только вопрос, когда ты лез в исходники функций, что там за спец символы такие типа неравно, стрелок, длинных равно? Это котлин вообще? Я как-то такого не встречал никогда

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Да это Котлин ) стрелки это лямбды, все вот эти длинные равно и не равно это сравнение по ссылке и значению, если мне память не изменяет )

    • @awkwardquestion8643
      @awkwardquestion8643 3 роки тому +1

      Пройди kotlin koans, офигеешь от того что можно на чистом Котлин писать

    • @stanislavbatura771
      @stanislavbatura771 3 роки тому

      @@awkwardquestion8643 о, спасибо посмотрю

  • @vladislavsyrgashev6982
    @vladislavsyrgashev6982 3 роки тому

    Хорошая тема. Спасибо за ролики. Вопрос: является ли Compose самодостаточным API? То есть можно ли с его помощью делать полностью готовое приложение или оно идет как дополнение?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Да, это полноценное апи. На нем можно сделать все тоже самое, что и в стандартном xml. Плюс я полагаю, что xml станет deprecated со времени

    • @vladislavsyrgashev6982
      @vladislavsyrgashev6982 3 роки тому

      @@MobileDeveloper Спасибо

  • @dmytromarchuk3023
    @dmytromarchuk3023 3 роки тому

    супер
    обнял

  • @9etsamoe431
    @9etsamoe431 3 роки тому

    Спасибо, Алексей!

  • @SergKoshelev
    @SergKoshelev 3 роки тому

    Лучше чай в кофе)

  • @paulsoja2732
    @paulsoja2732 3 роки тому

    начинаю въезжать в логику компоуза. Посмотрим на сколько оно будет востребовано. Может будет как со swiftUI, а может и зайдет. На данный момент смущают превью экранов. Показывает криво, а если в компоуз функцию передаются параметры, то вообще студия показывает ворнинг, что для такого не стоит использовать превью. Ну и пока всё равно всё путается с кодом и после xml это очень неудобно.

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Превью пока очень кривые это так и не пофиксили )
      Ну то, что оно путается с кодом это задумка такая )

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

      А как со SwiftUI ?

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

      @@alexandershangin1191 SwiftUi в проде уже 2 или 3 года, а особо никто и не использует.

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

      @@paulsoja2732 Так его не используют из-за ios13, ну и определенной баговости ))) А так вроде все хотят его использовать)

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

      @@alexandershangin1191 среди тех ios разработчиков, которых я знаю, никто не хочет использовать.

  • @hedinnoviybog9522
    @hedinnoviybog9522 3 роки тому

    Пушка!))

  • @СергейПанов-з3ц
    @СергейПанов-з3ц 3 роки тому +1

    5:34
    Что по ссылке на ролик про то как устроен Composer?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Забыл. Добавил в описание ссылку