Size: a a a

Flutter Developers — русскоговорящее сообщество

2019 June 14

IP

Igor Petushkov in Flutter Developers — русскоговорящее сообщество
в чём смысл тогда такой проверки в языке?
источник

🅵

🅵🅾️🆇 in Flutter Developers — русскоговорящее сообщество
ID:537664280
@PlugFox Еще раз спасибо за наводку, интегрировал либу felangel/bloc Теперь виджеты без лишней логики. Но появился вопрос на счет СтейтлессВиджета и bloc.

Среднестатистический виджет наследуется от СтейтлессВиджета и содержит методы, которые возвращают составные части типа Text и Padding и тп. Например, класс EmployeeWidget наследуется от StatelessWidget'а и содержит методы build, _employeePhoto, _employeeName и т.п.

Если мы храним стейт в bloc, то хотели бы получить этот bloc в методах _employeePhoto и _employeeName. Мы можем из метода build достать bloc используя контекст. Но получив bloc в методе build мы не можем записать его в какое-либо поле виджета, так как виджет у нас стейтлесс, а соответственно иммутейбл. И если мы несмотря на это создадим не-final поле, то будут варнинги при компиляции и в IDE.

Эту проблему можно решить используя СтейтфуллВиджет, но это грязное решение, так как setState мы не используем. Еще можно было бы хранить все методы в виде замыканий, прямо в методе build, но тогда у нас будет огромный метод со всеми радостями спагетти кода. Так же мы могли бы передавать из build в другие методы через аргумент, но будет повторение кода - каждый метод будет содержать аргумент bloc. Да же незнаю что делать с этим.
Я сча не соображу про что ты, извини
источник

ND

Nikita Dauhashei in Flutter Developers — русскоговорящее сообщество
Igor Petushkov
в чём смысл тогда такой проверки в языке?
В Swift такие проверки не делают просто)
источник

A

Abripuit in Flutter Developers — русскоговорящее сообщество
Nikita Dauhashei
В Swift такие проверки не делают просто)
И вместо запилить нормально, сделали if let
источник

🅵

🅵🅾️🆇 in Flutter Developers — русскоговорящее сообщество
Если ты про то, где создавать bloc - Одназначно в stateful виджете в его стейте
источник

IP

Igor Petushkov in Flutter Developers — русскоговорящее сообщество
Nikita Dauhashei
В Swift такие проверки не делают просто)
а я всё как-то хотел попробовать этот чудо язык... но вот что-то как-то..
источник

IP

Igor Petushkov in Flutter Developers — русскоговорящее сообщество
))
источник

🅵

🅵🅾️🆇 in Flutter Developers — русскоговорящее сообщество
Собственно ты как правило создаешь блоки при создании страницы. initState ну или сразу final
источник

🅵

🅵🅾️🆇 in Flutter Developers — русскоговорящее сообщество
А все страницы у тебя должны быть Stateful
источник

ND

Nikita Dauhashei in Flutter Developers — русскоговорящее сообщество
Igor Petushkov
а я всё как-то хотел попробовать этот чудо язык... но вот что-то как-то..
Так это делают)
источник

IP

Igor Petushkov in Flutter Developers — русскоговорящее сообщество
Nikita Dauhashei
Так это делают)
o_O
источник

IP

Igor Petushkov in Flutter Developers — русскоговорящее сообщество
что курил создатель этой конструкции в языке)
источник

A

Abripuit in Flutter Developers — русскоговорящее сообщество
Igor Petushkov
что курил создатель этой конструкции в языке)
Яблочный смузи)
источник

IP

Igor Petushkov in Flutter Developers — русскоговорящее сообщество
)))
источник

IP

Igor Petushkov in Flutter Developers — русскоговорящее сообщество
с ромашками, походу
источник

A

Abripuit in Flutter Developers — русскоговорящее сообщество
И все iOS разрабы считают, что это ок и даже не представляют, что if let - костыль, который никому не нужен
источник

A

Abripuit in Flutter Developers — русскоговорящее сообщество
Я бы понял, если бы это был var, но с let - тут как бы уже перебор
источник

ND

Nikita Dauhashei in Flutter Developers — русскоговорящее сообщество
Igor Petushkov
что курил создатель этой конструкции в языке)
Ух. Что, если я тебе скажу, что в этом языке можно расширять любые классы ? Причем не просто расширять дописывая в них свой функцианал, но и докидывать им свои интерфесы (тут protocol). В итого у тебя системный класс может соответствовать твоему интерфесу)
источник

A

Abripuit in Flutter Developers — русскоговорящее сообщество
Nikita Dauhashei
Ух. Что, если я тебе скажу, что в этом языке можно расширять любые классы ? Причем не просто расширять дописывая в них свой функцианал, но и докидывать им свои интерфесы (тут protocol). В итого у тебя системный класс может соответствовать твоему интерфесу)
Ты про extentions?
источник

ND

Nikita Dauhashei in Flutter Developers — русскоговорящее сообщество
Abripuit
Ты про extentions?
Да
источник