Программирование : Dart & Flutter по-русски
Андрей Рудин
а так по сути одно и тоже
Vladislav
вопрос состоял в концепции архитектуры, а точнее я интересуюсь опытом вашим, на сколько вредно для приложения и архитектуры использования функционального подхода
Андрей Рудин
в чем функциональный подход?
Vladislav
С концепциями я знаком, но как по мне, bloc захламляют архитектуру (делают её менее прозрачной, чисто моё субъективное мнение)
Andrey Unger
я не очень понимаю что вы хотите добится - делать StateFullWidget в ктором будет реализована вся логика? Типа архитектура без архитектуры?
Andrey Unger
после одного джуна попался такой проект с кодом виджетов на более чем 2к строк и стейтом размером с один экран кода). Вообще поддерживать такое - такое себе удовольствие)
Andrey Unger
соответственно никаких провайдеров или блоков в помине нет
Андрей Рудин
[
{
"type": "link",
"text": "https://habr.com/ru/post/522640/"
},
" а представь было бы еще и такое :) там было бы вообще нереально что-то сделать ))))"
]
Vladislav
на данный момент у меня идет генерация компонентов которые разбиваются на разные пакеты в которых есть всего одна статичная функция, туда прокидываются методы из других пакетов на обработку ошибок, валидацию и action методы, состояние экрана хранится в централизованном классе, соответственно widget собирается через методы и тем самым код становится более чистым с учетом такого подхода (постарался объяснить). Конечно извиняюсь за свой маленький опыт во flutter, так как изначально являюсь разработчиком java + spring, php + laravel и переходя на данную технологию чутка мое понимание изменяется
Vladislav
ты считаешь это плохим подходом?
Vladislav
по моему мнению слишком раздробленная архитектура и можно было бы реализовать все в репозиториях, а не отдельно прописывать папку с методами для отдельной модели
Андрей Рудин
я считаю это излишним.
Пашка
для меня тут только кейс лишний
Андрей Рудин
в Java, PHP у тебя императивный код, в Flutter у тебя декларативный код, конечно понимание меняется ) пипец как меняется
Timur Karimov
никак не меняется
Андрей Рудин
ок, спорить не буду.
Vladislav
ну, в целом попробую данный подход, как по мне архитектура является чистой, провайдеры конечно же добавлю, но постараюсь полностью отказаться от bloc'ов и через 1.5 месяца уже можно будет посмотреть, отвалится ли приложение и дадут ли мне по **алу за такое
Alexandr Drobyshev
не то что бы я не юзаю блок, но я не подохревал что это обязанность ??
Dmitry Bubnenkov
У меня из БД возвращается список списков. В нем есть тайм-штэмп. Dart не умеет его принудительно превращать в текст. Есть способ его заставить это делать?
Dmitry Bubnenkov
[
"есть какое-то решение? тут про это писали ",
{
"type": "link",
"text": "https://github.com/dart-lang/sdk/issues/16628"
},
""
]
Андрей Рудин
если проще то можешь заюзать scoped_model
Andrey Unger
да читаю это все и все больше riverpod вспоминаю - куда уж чище-то?))
Andrey Unger
вообще прежде чем изобретать что-то свое в плане архитектуры - следует наверно посмотреть все что уже есть подобного? может кто-то уже реализовал
Kit Khilobok
Ну напиши сериализатор/конвертер свой
Vladislav
звучит логично, я глянул, попробовал, мне не понравилось, написал то, что по моему мнению удобно
Dmitry Bubnenkov
Это понятно, но мне нужно короткое решение
Андрей Рудин
GetX еще посмотри ;)
Andrey Unger
[
{
"type": "mention",
"text": "@DmitryBubnenkov"
},
" ",
{
"type": "link",
"text": "https://stackoverflow.com/questions/50632217/dart-flutter-converting-timestamp"
},
" чем не устраивает? первая строчка в гугл"
]
Kit Khilobok
[
{
"type": "link",
"text": "https://pastebin.com/8pytLGxD"
}
]
Dmitry Bubnenkov
не устраивает тем, что я в result от запроса получаю список списков. И примеры описывают как нужное поле к другому виду привести, а я хочу сделать чтобы просто все кастанулось к строкам
Dmitry Bubnenkov
[
"кажись так можно: ",
{
"type": "code",
"text": "return json.encode(result, toEncodable: (date)=>date.toString())"
},
""
]
Andrey Unger
Гребаная бетта телеграмма! После крайнего сегодняшнего апдейта он сатл крэшится при нажатии «правой кнопкой» на любое сообщение. Я даже теперь «ответить» не могу адресно =(. Придется ждать пока пофиксят. Благо н абетку апдейтов прилетает по несколько штук в день
А
Ребят тут такой косяк может кто сталкивался после переустановки винды android studio не запускается но работает в фоне (диспетчер задач подсказал) Java установил переменную среду прописал. Не подскажите в чем проблема ?
Ahmed Bogatyrev
Ребят где бы попрактиковаться по flutter?
Ahmed Bogatyrev
А то написал одно приложение сам даже боюсь на этот код смотреть
Андрей Рудин
сходи на udemy купи пару курсов, потом смотри примеры на youtube
Андрей Рудин
это даже хорошо что на говнокодил, так ты получишь обратную связь и поймешь как и где сделать лучше
Sergey Barbirosha
Там так себе примеры
Sergey Barbirosha
Лучше изучать чужой код
Андрей Рудин
я с Кокоринского курса начал
Андрей Рудин
курс гавнище конечно то еще, это когда ты уже знаешь что делаешь, но вначале, стартануть, очень хорошо заходит.
Андрей Рудин
я думаю за 1000 рублей стоит его купить.
Андрей Рудин
а потом уже документация, гугл, ютуб и вот это вот все. но для начала, я бы посоветовал этот курс.
Джамиль Хаметов
А через что сделать вот эту дату, которая будет меняться
Alexandr Drobyshev
я обычно всегда сомтрел код чужой и по нему учился) но не абы чей)) а то могут выложить и такие как я или еще хуже)) обычно сомтрю код популярных библиотек) и примеры с ними
Андрей Рудин
ну в таком случае еще надо понимать, почему это сделано именно так, а не иначе. вот этого по большому счету не хватает.
Alexandr Drobyshev
[
"мне кажется можно попробвоать сделать с этим\n",
{
"type": "link",
"text": "https://pub.flutter-io.cn/packages/sticky_headers"
},
"\n",
{
"type": "link",
"text": "https://pub.dev/packages/grouped_list"
},
"\nи тд"
]
Джамиль Хаметов
Да нашел их , спасибо
Eldar
Ребя кто знает какие значения у Аппбаровского shadow ?
Kostya Tsymbaliuk
можно посто вьюшку кинуть в Stack, а на скролл кинуть слушаетель, и по позиции скролла менять значение во вьюшке
Джамиль Хаметов
Ну пока попробую готовое решение
Vlad Pisatel
[
"Всем привет:)\nИщем разработчика на Flutter с опытом от года на реализацию довольно простого медицинского приложения. \nСрок реализации - порядка месяца\nОплата от 160к и зависит от необходимости подключения нашего ведущего разработчика и прочих помощников\nО нас: ",
{
"type": "link",
"text": "harddays.dev"
},
"\nС флаттером 3 года, в разработке ПО с 2012года"
]
Constantine
вроде человека ищете, но тут же про свой опыт разработки ПО говорите
Vlad Pisatel
Это скорее чтобы показать, что у нас есть и свой ресурс, с которым мы можем помочь, подстраховать и прозрачно построить процесс)
Vlad Pisatel
Мы не проект, который ищет человека на реализацию, а компания, которая ищет кого-то на долгосрок через вот такую помощь с одним из проектов:)
Constantine
не особо получилось показать ) про оплату все таки чуть понятней бы ) потому что «от» звучит прям как вилка от 40 до 300 у вакансии в интернете )
Vlad Pisatel
В зависимости от объема работы. Нам нудно сдать проект примерно через месяц. От кол-ва часов, опыта, необходимости подключать дополнительные ресурсы и зависит) Это проектная работа, а не ставка для отбытия часов)
Vlad Pisatel
И тут никто не пишет 40) Вполне себе нормальная цифра
Тарас
Привет, как AssetImage установить height, если он есть бекграунд в большом контейнере? Нужно уменьшить Height чтобы после image на бекграунде было видно колор
Андрей Рудин
не думаю что через BoxDecoration это можно сделать :(
Андрей Рудин
я не нашел ??(
Constantine
я скорее про правила игры. если запилите сами за месяц, то 200, если за 1.5 то все равно 200, за 2 не интересно, если наши ресурсы подключаем, то минус 30%, потому что часы разработчика необходимо оплатить ) ну и главное, надеюсь у вас есть список хотелок, чтобы фикс оплата была? часы и ставка не про отбытие часов, а про меняющиеся требования и доделок «тут мы забыли» и «а тут я думал оно предполагалось по умолчанию»
Vlad Pisatel
Да, но это обсуждается не в чате де, а лично) С этим проблем нет вообще)
tdesc
расскажите потом про кейс, как успешно нашли и за месяц все сделали
Constantine
с ящиком редбула можно и сделать ))
tdesc
похоже на барахолку больше чем на ящик редбула
Андрей Рудин
да все от задачи уж зависит + от опыта
Николай
всем привет, подскажите, в x-code такая ошибка Module 'flutter_inappwebview' not found, вроде всё на месте
Constantine
[
{
"type": "code",
"text": "flutter clean"
},
" + ",
{
"type": "code",
"text": "flutter pub get"
},
" пробовал?"
]
Constantine
судя по всему поды недоставились/отвалились )
Николай
да, пробовал и pod install в ios, ошибки нет, а вот когда анализ делаю в x-code, тогда и появляется
Николай
[
"указывает на ",
{
"type": "hashtag",
"text": "#import"
},
" \nможно докинуть файл, только я не понял, откуда он их берет?"
]
Vlad Pisatel
О, разумная мысль))
Mitai
[
{
"type": "link",
"text": "https://t.me/dartlang_jobs"
}
]
Vadim Lukichev
Cоздает папку с симлинками на пакеты в пабкеше В пабкеэш залетают при flutter pub get Если там все ок, можно еще попробовать, на авось в Xcode ->Product->Clean Build folder
Тарас
Так вот нельзя через мап вывести виджеты?
Николай
ага, спасибо, сейчас попробую, clean делал
Илья Максименко
Unhandled Exception: Unhandled error DioError [DioErrorType.RESPONSE]: Http status error
Илья Максименко
кто-то знает почему не хендлится ошибка
Николай
пробовал, там наверно причина, что самого в yml его у меня нет, это плагин oauth2_custom_uri_scheme: ^0.4.7 цепляет похоже его
Илья Максименко
`try { return _tokenService.getToken(credentials); } on DioError catch (e) { print('hello'); print(e.response.statusCode); if (e.error is SocketException) { throw ConnectionFailure(); } else if (e.response.statusCode == 401 || e.response.statusCode == 422) { throw WrongCredentialsFailure(); } else { throw ServerFailure(e.response.statusCode); } }`
Илья Максименко
в catch не заходит
Vadim Lukichev
[
"я про спред\n",
{
"type": "link",
"text": "https://dart.dev/guides/language/language-tour#spread-operator"
},
""
]
Sergey
[
"Кто-нибудь, успешно перешёл на embedding 2?\nЧто в ",
{
"type": "link",
"text": "MyApplication.java"
},
" менять надо?"
]
Dima Kotlyarov
Парни привет, нужен совет. Флаттер выставляет все размеры типа паддингов марджинов и т.д. в своих "логических единицах" но возникает вопрос - почему тогда на рахзных разрашенииях ( на рахных телефонах старнички выглядят по разному, и как с этим бороться. зараннее благодарен
Vadim Lukichev
Это к вопросу о грамотной флэксибл верстке виджетов. А так флаттер использует стандартный вебовский подход, 100 пикселей, по длине физически будут равны на разных экранах с разной плоностью и размерами.
Sergey Larionov
Это немного не так. Пиксел во Flutter, также как и в web - по сути единица углового разрешения, как градус. Физический (в мм) размер элемента может отличаться в зависимости от расстояния от экрана, на котором предполагается нахождение глаз пользователя. Экран телефона располагается ближе к глазам, чем экран стационарного компьютера, поэтому и физический размер условных 100 "независимых" пикселей может быть меньше.
Dima Kotlyarov
это к вопросу - каким образом доибться правильного отображения на экранах с рахзной плотностью пикселей
Vadim Lukichev
[
"40% флексибл верстки решается через флекс и его производные\n40% пониманием как работают constraints\n20% попытки взять размеры из рендерслоя))\n",
{
"type": "link",
"text": "https://api.flutter.dev/flutter/widgets/Flex-class.html"
},
"\n",
{
"type": "link",
"text": "https://flutter.dev/docs/development/ui/layout/constraints"
},
"\n",
{
"type": "link",
"text": "https://flutter.dev/docs/development/ui/layout/responsive"
},
""
]
Dima Kotlyarov
а вот это без выебосов и по факту. спасибо большое.
Vadim Lukichev
физический размер элемента отличается в зависимости от расстояния до экрана? там же просто рассчитывается берется плоность пикселей на дюйм и все, идея в том чтобы везде размеры были одинаковы
Vadim Lukichev
[
{
"type": "link",
"text": "https://api.flutter.dev/flutter/dart-ui/Window/devicePixelRatio.html"
},
"\n38 логических попугаев на сантиметр"
]
Sergey Larionov
Задумайтесь, откуда берется значение этой самой плотности пикселей, и кто и как его определяет :)
Sergey Larionov
Так-то да, всё просто, перемножил devicePixelRatio, размер пиксела в мм и размер объекта в логических пикселях - получил размер объекта в мм.
Vadim Lukichev
система говорит про плотность физических пикселей, что мне думать. или я не понял
Vadim Lukichev
говориться же 38 логических пикселей флаттера на сантиметр, сантиметр же физический не? или флаттеровский))
Sergey Larionov
Моё пояснение к тому, почему на разных телефонах UI может выглядеть немножко по-разному. А вот почему: размер экрана в логических пикселах может быть чуть-чуть разным.
Sergey Larionov
38 логических пикс / мм, он же 96 dpi - это ПРИМЕРНОЕ значение, там так прям и сказано. Т.е. может отличаться, немного.
Vadim Lukichev
честно говоря, да, я штангельциркулем не сравнивал, но вот это rouglhly в бою достаточно, чтобы понять, как что будет выглядеть на большинстве устройств. И то что на 4" экране "жесткая" верстка будет выглдеть не так как на 5"
Sergey Larionov
речь не про 4" и 5" экраны, а про экран телефона и десктопа, например. Мне аж прям самому стало интересно померить реальный devicePixelRatio в самых экзотических вариантах. На устройствах: 1. все телефоны под рукой, включая старые 2. десктоп (24" FullHD и 32" 4K) 3. ноутбук (15" FullHD) со следующими вариантами Флаттера: 1. приложение под Андроид (телефоны) или Windows (компьютеры) 2. web, причем дополнительно поиграться с масштабированием в браузере.
Vadim Lukichev
вот это будет реально интересно. я просто сравнивал линейкой как-то))
IIIYT
Добрый вечер, можете подсказать варианты решения проблемы с нечитаемостью labelText? Использую TextFormField в нем InputDecoration с labelText.
Alexandr Drobyshev
[
"вот смотрю есть шейдеры, я могу наложить шейдер на виджет, но в шейдер передаю то что имеет метод createShader, то етсь градиенты\n\nеще сомтрю ClipRect который рпинимает патч для обрезки\n\nно не пойму как мне реализовать простую вещь)\nто есть есть Icon(",
{
"type": "link",
"text": "Icons.xxx"
},
")\nи есть wave\n\nкак мне сделать из иконки маску для wave? ??"
]
Evgeny Cherkasov
Недавно столкнулся с проблемой - на телефоне с большим pixelRatio не влезал текст. Добавил проверку и динамическое масштабирование размера текста. У меня на эмуляторе все нормально. Но заказчик говорит что на девайсе проблема осталась. Получается flutter не всегда правильно определяет pixelRatio из платформы...
Vadim Lukichev
ты мне тогда тему подкинул про рендеробждект и постфрейм на виджете)) от пострфрейма вроде понятно было как можно избавиться, а от рендеробжекта я так и не понял - не все идеально во флаттере, но хорошо, что он развививается pixelRatio похоже тоже может вести себя не адекватно, имхо, думаю это частный случай и от "прошивки" зависит, я уже не помню, откуда engine получает плотность, но вроде "стандартные" методы апишек использовал. Это андроид или айос был?
Evgeny Cherkasov
На конкретной модели Samsung проблема. У меня его нет, так что сам не мог разобраться. Так что непонятно, то ли самсунг неправильно отдает pixelRatio, то ли в чем то еще проблема
Vadim Lukichev
[
{
"type": "link",
"text": "https://github.com/flutter/engine/blob/78b567f7d55b66a6e9bcd59a8703202c1b8a6557/shell/platform/android/io/flutter/view/FlutterView.java#L177"
},
"\nвот вроде берет стандартно из платформы, можно отсюда \"плясать\""
]
Evgeny Cherkasov
Насчет проблемы определения размера виджета - на недавней durtup спрашивал у ребят из surf. Посоветовали избегать подобных кейсов / по другому строить дерево. Еще посоветовали посмотреть их либу, которая типа решает этот вопрос. Я еще не изучал, но как понял там без рендер обжект и коллбэков тоже не обходится
Андрей Рудин
кстати вот да, надо бы потестировать на старых Самсунгах ) спасибо!
Vadim Lukichev
имхо, получение данных из рендерслоя и на основе их строить виджеты в виджет слое, не совсем хорошая идея - считаю это недостатком текущей реализации виджетов, но пока как есть так есть
Андрей Рудин
что значит получение данных из рендерслоя?
Evgeny Cherkasov
Есть три слоя в реализации ui - виджеты, элементы и рендер объекты
Vadim Lukichev
координат, размеров, положений и т.д. все что генериться на уровне renderobjectов при построении сцены
Андрей Рудин
я думал все есть виджеты
Vadim Lukichev
есть сейчас некоторое количество "порталов" до рендерслоя и его "логики" лэйаута, например, тот же CustomSingleChildLayout.
Vadim Lukichev
еще мне полезно было взглянуть на принцип рендеринга в хроме, называется найди 10 отличий))
E
А почему Dartup 2020 записей конференций нет?
Владимир Калашников
Они заблочены
E
Вроде же бесплатная конференция и проходила в ютубе
Андрей Рудин
на видюшки наверное порежут и выложат, в прошлые годы же выкладывали
Никита
[
"Спроси у ",
{
"type": "mention",
"text": "@anokhin"
},
""
]
Anton Anokhin
Записи будут выложены в районе 15 числа плейлистом с отдельными видео
Alexandr Drobyshev
[
"есди есть\nclass SessionState extends ",
{
"type": "code",
"text": "Equatable"
},
" {\n final User user;\n props => [user];"
]
Alexandr Drobyshev
[
"но user не ",
{
"type": "code",
"text": "Equatable"
},
""
]
Alexandr Drobyshev
то state всегда равен SessionState(User())
Alexandr Drobyshev
почему так? я думал если нет Equtable то толжно сравнить просто указатели
Пашка
а если user extend equatable?
Alexandr Drobyshev
да видимо я дурак, оишбка в том что юзер падал и не возвращался, с сервера идет баланс int а когда на счету 0 то прихоит "0.00" ??
Пашка
лучше такое делать типа num
Alexandr Drobyshev
а я обенул в тру а обработку не сдлела, ща допилю проверю, может и работает все
Alexandr Drobyshev
точно, забыл про этот тип)) спс
Alexandr Drobyshev
Unhandled error type 'String' is not a subtype of type 'num' occurred in Instance o
Пашка
а как вы string кладете в num?
Alexandr Drobyshev
да прсото присвоение)
Пашка
так разве nu, это не числовой тип?
Alexandr Drobyshev
[
{
"type": "code",
"text": "balance: num."
},
{
"type": "italic",
"text": "parse"
},
{
"type": "code",
"text": "(json[\"balance\"]),"
},
" сделал так"
]
Alexandr Drobyshev
блин ну а иногда приходит инт, упадет опять?
Alexandr Drobyshev
то есть приодит либо balance: 123 либо balance: '0.00'
Alexandr Drobyshev
блин, падает тгда с int ??
Alexandr Drobyshev
[
{
"type": "code",
"text": "double."
},
{
"type": "italic",
"text": "tryParse"
},
" интересно это типа не упдает если кривой формат?"
]
Alexandr Drobyshev
[
{
"type": "code",
"text": "balance: double."
},
{
"type": "italic",
"text": "tryParse"
},
{
"type": "code",
"text": "(json[\"balance\"]) ?? 0,"
}
]
Alexandr Drobyshev
так то есть можно
Zhenia Gornienko
Ребята, подскажите группу с вакансиями для Flutter и вообще для мобильных разработчиков
Alexandr Drobyshev
[
{
"type": "code",
"text": "balance: double."
},
{
"type": "italic",
"text": "tryParse"
},
{
"type": "code",
"text": "(json[\"balance\"] ?? '0') ?? 0,"
},
" даже так"
]
Alexandr Drobyshev
у нас эпл спрашивал почему юзер должен платить и почему такую сумму типа того) не помню уже
Alexandr Drobyshev
ответ был типа потому что он получает каждый день обновленную инфу)
Sergey
гайз, есть реф на группу с поиском работы для flutter разрабов?
Sergey
Была у кого-то такая проблема?
Vadym Buhaiov
Ребят, подскажите, читал здесь мысль что flutter и dart умирает и нет поддержки от гугла. Это шутка или это действительно так ? Вот вышла Fuchsia в общий доступ и официальным инструментом разработки под неё вроде бы как есть флаттер
Sergey
Каждый крупный релиз пишут, что разработчиков на флаттер становится все больше, как и приложений, так что, полагаю, что утка
Андрей Рудин
вот то что fuchsia вышла в Open source это как бы не понятно какая новость, хорошая или плохая. По поводу что умирают, ну хз. я пока вижу наоборот.
tdesc
если это ваша мысль то больше похоже на шутку, если не ваша, спросите у того кто эту чушь производит
Vadym Buhaiov
Не моя, просто она у меня тоже вызвала сомнения вот я и спросил это единичное мнение или глобальное
Sergey Larionov
[
{
"type": "link",
"text": "https://t.me/dartlang_jobs"
}
]
tdesc
думаю популярность дарта в гитхаб лучше показывает ближайшее будущее
Vadim Lukichev
[
"Да, недавно появилась \nСвязана с Android Sdk firebase и не понятно что аффектит \n",
{
"type": "link",
"text": "https://github.com/FirebaseExtended/flutterfire/issues/4090"
},
""
]
Ivan
я как раз борюсь сейчас с ней)
Sergey
У меня после обновления gradle воявилось
Sergey
может остались у кого примеры тестовых заданий по flutter?
Тарас
Установил таким образом backgroundImage. Но он перемещается вместе со скролом, как его зафиксировать и когда скролю, image проскроливался и дальше было видно только background color
Andrew Momotov
Всем привет. Нужен совет от опытного человека. Хочу заняться мобильной разработкой. Не разу не програмировал и не верстал. Обязательно ли мне изучать html css java script?
Andrew Momotov
И какой язык лучше всего выбрать для мобильной разработки новичку.
Пашка
если вы хотите flutter изучайте dart
Пашка
html css и скрипт не как не связаны с мобильной
Пашка
может и переплетаются
Пашка
но не в этом контексте
Game Master
[
"Dart Flutter Learn (RU, EN)\n",
{
"type": "link",
"text": "https://t.me/dart_flutter_learn/5"
}
]
Андрей Рудин
кто ненавидит деплоить в App Store тот я. да больше скажу, я их в принципе ненавижу!!!!!!!!
Andry
да тяжелая это работа, из болота тащить бегемота
Пашка
все решается автоматизацией
Андрей Рудин
там даже по особенному надо открывать Xcode ??
Пашка
ну не знаю что по особенному
Пашка
вроде проект достаточно открыть
Пашка
ну до начала с сертификатом поколдовать
Андрей Рудин
сложнее ( я скриншот сделал и комп уже выключил
Андрей Рудин
там как то с консоли правильно открывать, чтобы не только проект был но и Pods
Пашка
тут вам не хватает знаний нативности
Андрей Рудин
потому что в большинстве pods'ов minimal ios 8 а у одного pods minimal 9 и все, сваливается в ошибку
Андрей Рудин
не спорю, этот момент подтянуть надо
Пашка
у swift book есть деплой приложения
Пашка
но суть не поменялась
|