Size: a a a

Cicerone Chat (RUS)

2021 April 13

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
и защищает от крешей и потерь переходов при уходе в паузу (когда поверх вашего приложения открывается звонилка или еще что-то)
источник

Д

Дмитрий in Cicerone Chat (RUS)
спасибо, буду разбираться
источник
2021 April 15

ES

Egor Sigolaev in Cicerone Chat (RUS)
Подскажите пожалуйста, по каким причинам Screen может быть нулл? Я делаю самые простые переходы через router.navigateTo() с флагом clearContainer = false. Флоу такой:
A -> B -> C -> D. Все фрагменты через флаг с false. Когда из фрагмента D хочу вернуться на C через backTo(), то меня кидает на A. Покопался в либе, увидел, что при Screen равно null, будет переход на корневой фрагмент (в моём случае A). Какие могут быть проблемы?
источник

ES

Egor Sigolaev in Cicerone Chat (RUS)
В MainActivity запускал через navigateTo первый стартовый экран. Заменил на newRootScreen. Теперь можно возвращаться через свайп навигационной кнопкой назад, а backTo не работает.
источник

MN

Max Novikov in Cicerone Chat (RUS)
Чуть выше на это отвечали, @terrakok походу надо было делать ключь обязательным)
источник

Р

Роман in Cicerone Chat (RUS)
@terrakok Привет, тоже думаю что нужно чтото с этим делать, иначе у многих будут подобные проблемы. С screenKey и командой BackTo сейчас всё совсем не очевидно. Столкнулся с этим при переходе на новую версию библиотеки.

В чём пролема.
Теперь мы задаём экраны через fun, а до этого задавали через class/object. Это не позволяет нам автоматически определить уникальный ключ для каждого экрана.

Зато теперь очень элегантно можно писать вот так
fun MyScreen(param:String) = FragmentScreen { MyScreenFragment.newInst(param) }
И воде бы всё работает, пока не потребуется комманда BackTo()

Без явного указания screenKey у всех экранов будет выставлен один и тот же ключ "FragmentScreen" т.к. this::class.java.name. Если везде задавать явно screenKey то получаем много боллерплейта.

Можно явно задать ключи только для тех экранов для которых хотим вызывать BackTo() но это не консистентно и легко допустить ошибку.

Для себя пока решил вернуться к заданию через  class/object, да менее красиво, но чтобы ключи выставлялись автоматически
class MyScreen(p:String): FragmentScreen(null, { MyScreenFragment.newInst(p) } )
источник
2021 April 17

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
посмотрите новый релизъ
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
проблема решена
источник

Р

Роман in Cicerone Chat (RUS)
Супер, бегу смотреть )
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
и теперь есть и DSL для описания экранов и возможность в виде классов определять и более того, они теперь просто интерфейсы
источник

Р

Роман in Cicerone Chat (RUS)
Идеально!!!
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
для любителей котлина! зацените.
1) FragmentScreen - это интерфейс
2) но можно вот так 😉

fun ProfileInfo() = FragmentScreen { ProfileFragment() }
источник

Р

Роман in Cicerone Chat (RUS)
Даа, до этого не встречал такое. Очень классно выглядит!
interface MyInterface {
 ...
 companion object {
     operator fun invoke(...) = ...
 }
}
источник

EM

Eugen Martynov in Cicerone Chat (RUS)
Когда можно будет юнит тестировать? :)
источник

S

Silent829 in Cicerone Chat (RUS)
Блин! А я думал на Чичероне Константин забьет и запушит 0.6.2 в Модо!
Шуткую)
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
Что вы хотите в библиотеке тестировать? Я видел запросы, но они относятся скорее к тестированию фрагмент менеджера, а не навигации.
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
Для всего остального есть интерфейсы, которые никому не мешают тестировать
источник

OF

Osip Fatkullin in Cicerone Chat (RUS)
Загляните в исходники корутин, gradle kotlin dsl и т.д. там полно всякой "магии" с переопределениями операторов, делегатами и функциями-конструкторами для создания инстансов интерфейсов
источник