Программирование : Dart & Flutter по-русски
Олжас Сулеймен
Так они к этому и стремятся
Олжас Сулеймен
Чтоб у вас везде был один код
KeepOnSmiling ??
Классно было бы, если полностью кроссплатформенно получалось
Олжас Сулеймен
Говорили что под вебом доступ к веб апи не будет, а все будет сам Флаттер разруливать
Nikolay Kost
ну можно на канвасе рисовать, так же как в девайсе он это делает
KeepOnSmiling ??
Вот это было бы идеально..
KeepOnSmiling ??
Осталось только дождаться официальной поддержки :)
Олжас Сулеймен
За их офф репой последите там появляются коммиты по поддержке веба
Ярослав Макаров
Подскажите пожалуйста, есть ли сейчас у флаттера библиотека для серьезной работы со звуком:запись, изменение темпа, ключа, микширование, эффекты?
Davron Asrorov
Подскажите, а почекать пуши firebase_messaging можно на эмуляторе или нет?
Виталий
iOS эмуляторы не поддерживают пушки
Виталий
Хоть и показывают «разрешите получение уведомлений»
Виталий
А андроид полноценно, как физ устройство работает с пушами
Виталий
Только звук уведомления ужасный х)
Ivan
Кто подскажет, в чем разница Navigation.{push, pop...} и Navigation.of(context).{push, pop...}
Олжас Сулеймен
Первые тоже самое что и вторые
Олжас Сулеймен
[
{
"type": "link",
"text": "https://github.com/flutter/flutter/blob/af07bb50faecbfe7d576113058c94cae0e21b91e/packages/flutter/lib/src/widgets/navigator.dart#L1115"
}
]
Danny
flutter_bloc Есть стейт с переменными (родитель), а есть стейт, который должен показать на экране ошибку (наследник). После yield ErrorState() главный стейт обнуляется. Как избежать этого?
KeepOnSmiling ??
Как думаете, есть ли шансы в WebView флаттера подключить хмтл с Phaser js, чтобы работало android/ios? Или без вариантов?
Max
можно конечно, но зочем? чем какой-нибудь react native не угодил?
KeepOnSmiling ??
Есть игры-приложения на phaser.js, которые не очень хочется портировать на флаттер, мб в будущем, а пока думал и так сойдёт, чтобы было. А react native... честно говоря, не знаю даже, а чем он лучше в этом плане?
KeepOnSmiling ??
Или имеется ввиду переписать с фазера на react native, чтобы получить нативное воспроизведение на мобилках? Просто фигня в том, что на фазере уже написано и я вот в сомнениях нужно ли это переписывать, хотелось бы заранее прикинуть, посмотреть как оно выглядит, покуда даже не знаю как к этому webview подступиться :)
KeepOnSmiling ??
Я в курсе, что гугл не ровно дышит к вебвью.. :)
Sergey Salnikov
[
"Стейт не может изменяться(никаких переменных), он менятеся на новый стейт,\nделай проперти final.\nИ сделай конструкторы, при создании Error клади в конструктор проперти текущего стейта.\n\n\n",
{
"type": "pre",
"text": "@immutable\nclass Parent {\n final String field;\n\n Parent(this.field);\n}\n\n@immutable\nclass Child extends Parent {\n\n Child(field): super(field);\n}",
"language": ""
},
""
]
KeepOnSmiling ??
Как думаете, может ли Dart выступить в виде бекенд-веб-сервера? ?? Думал я заюзать Flutter for web, а там чё-то от флаттера я вообще не понял чё осталось ?? Какие-то обращения к HTML, селекторам и прочему. В итоге подумал, а чего бы не выделять в кроссплатформенных проектах (мобайл, веб) логику в бекенд, а интерфейс писать под веб на phaser.js, а под мобайл на флаттере. Всё равно интерфейс придётся писать отдельно как я понял (если под текущий flutter for web). Хорошо будет, если потом смогут сделать универсальный код под веб, но проекты делать-то нужно сейчас, вот и думаю :)
Bod9i
Ну если он подходит под твои задачи - пиши бэк на дарте. Это же очень все разниться от нужд проекта и его размера.
Bod9i
Можно на микросервисную архитектуру переключиться, и писать каждый кусок вообще на разных языках
Stanislav Sagan
Сумасшедшие)) ИМХО) хех
KeepOnSmiling ??
Мне кажется, что так проще всего таргетировать веб... По задачам - дарта достаточно на бэке. А так, под флаттером, просто держать опрделённую архитектуру, которая позволяла бы всю бизнес-логику моментально выносить в бэк...
Stanislav Sagan
Ага, Я бы не рисковал так.. хотя, если честно я даже не знаю не интересовался, есть ли какие-то фреймворки хоть немного предназначенные для этого
KeepOnSmiling ??
Может они создадут настоящий flutter for web, который будет переноситься под веб вообще без изменений :)
Bod9i
Не думаю, что в ближайшем будущем Учитывая какой angular dart ща туговат
Bod9i
То над flutter for web предстоит еще много работы
Stanislav Sagan
Вообще я сюда зашёл спросить, утро доброе.. Есть ли пример кода как может пользователь отметить себя на карте? А именно поставить свой маркер на Гугл карты? Я что-то по разным запросам гуглил.. что-то на такой пример не наткнулся (
Bod9i
Я конечно на флатере не пишу
Bod9i
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/55000043/flutter-how-to-add-marker-to-google-maps-with-new-marker-api"
}
]
Bod9i
Но первой же ссылкой
KeepOnSmiling ??
[
"Мб что-то вроде для управления картами: ",
{
"type": "link",
"text": "https://medium.com/flutter/google-maps-and-flutter-cfb330f9a245"
},
""
]
KeepOnSmiling ??
[
{
"type": "link",
"text": "https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter"
},
"\nТам классный пример ещё был"
]
KeepOnSmiling ??
[
"По определению своего местоположения не знаю, честно говоря. Но как вариант - через веб :) (запросом к нему)\nНапример: ",
{
"type": "link",
"text": "https://mylocation.org/"
},
"\nвыдаёт широту и долготу местоположения"
]
Bod9i
А разве нет API какого нибудь к GPS?
KeepOnSmiling ??
Хм, скорее всего, есть :)
KeepOnSmiling ??
Забыл, что в мобильниках есть ещё и GPS :D)))
Bod9i
Было бы странно, если нет)0)
Stanislav Sagan
О, вот это вроде что-то похожее... По крайней мере уже вижу как хоть нужная кнопка должна выглядеть))))
Stanislav Sagan
[
"Мб что-то вроде для управления картами: ",
{
"type": "link",
"text": "https://medium.com/flutter/google-maps-and-flutter-cfb330f9a245"
},
""
]
Bod9i
Выдаёт шо я в Киеве, лол Норм так, километров на 550 ошибся
KeepOnSmiling ??
Да, видимо, с вебом лучше не заморачиваться иначе таксист охренеет как далеко ему ехать :)
Stanislav Sagan
Ну, если что, мне не обязательно именно определение своего местоположения) Но очень важно функционал поставить пользовательскую отметку)
Stanislav Sagan
Всем спасибо, буду ковырять)
Stanislav Sagan
А ну а чего спрашивал, просто мне кажется что если буду сам пилить - по рогобански получится. Хотелось посмотреть как поставить отметку, передвинуть, и прочее на все случаи криворукости пользователя так что, такой ответ мне конечно не подходит же
Krat0S
[
"У виджета ",
{
"type": "code",
"text": "GoogleMap при создании есть "
},
"пропертя markers. \nСоответственно надо переменную завести и в сет стейте обновлять ее"
]
Krat0S
[
{
"type": "code",
"text": "static final MarkerId selected = MarkerId(\"1\");\nMarker marker;\n Map markers = {};\n\nВ ините"
},
":\n",
{
"type": "code",
"text": "marker = Marker(\n markerId: selected,\n position: widget.startPosition\n );\n markers[selected] = marker;\n\n\nПо тапу на карте:\n\nFuture _setMarker(LatLng point) async {\n Marker m = Marker(\n markerId: selected,\n position: point\n );\n if (mounted) {\n setState(() {\n markers[selected] = m;\n }\n });\n }\n }"
},
""
]
Denis
А ка то нибудь знает кто обучает flutter?
Dima
только на udemy курсы разные для начинающих. В Киеве есть одни курсы, но они просят 3600 евро за 2 недели и явно обучают азам
Y R
можно ссылку на курсы?
Serge Shkurko
[
{
"type": "link",
"text": "https://www.udemy.com/course/learn-flutter-dart-to-build-ios-android-apps/"
}
]
Y R
я о курсах в Киеве за 3600 евро)
l
тратить 4к за курсы, когда есть божественная документация
Y R
я полностью с вами согласен - просто интересно стало )
Dima
[
{
"type": "link",
"text": "https://www.nobleprog.com.ua/kursy-flutter"
}
]
Dima
А там 14 часов, а не дней :D
Dima
Choose an IDE это мощно
Alex Molchanov
Не сочтите за флуд, но, имхо, нормальная такая цена за инвестицию, что бы зарабатывать. Особенно, если это азы и первые ступени в разработке. ???>? А то начитаются документаций, а потом лезут на рынок необоснованно демпингуя цены. Чем делаю плохо и себе и рынку
l
извините конечно, но за 14 часов человеку нормальное мышление не поставить никак а те кто заплотют за курсы и считают сразу себя профессионалами, ведь за скилл уплочено и потом рынок наводняется теми, кто не умеет кодить, но сходил на дорогие курсы и считает что ему должны платить соответствующе
l
хм как я понял, это не запись на курсы, а их заказ, который можно сделать для группы в удобном вам месте это скорее b2b что-то, для компаний и тогда цена может быть и обоснована
Alexandr Gusakov
Пока не влез плотно, смотрю примеры по flutter. Количество завершающих скобок например в инициации виджета, это какой-то треш, там только так или есть варианты писать более красиво?
toTheMoon??
А посоветуйте как тестить андройд без андройд студии
Rus
Кто знает в каком состоянии flutter для web?
Stanislav Sagan
Часто обсуждается, попробуй поиск по этому чату по ключу "Flutter web"
still No satori?
В VScode ставь плагин флаттера и дарт и открывай созданный проект папку в Vscode и запускай дебаг без дебаггинга, запуститься эмулятор, который заранее надо создать в андроид студио и все
Serge Shkurko
елсли смотреть на android xml, react и т.п. в markup languages везде есть закрывающие теги, это абсолютно нормально
Serge Shkurko
чтобы не было скобочного ада - надо декомпозировать виджет на более маленькие состовляющие
Мумитроль
Да вот только в вебе можно иногда чет сделать на js/html и интегрировать в проект.
Serge Shkurko
пока не включен в ветку stable
Мумитроль
На ПК в браузере будет норм, хотя и подлагивает + некоторые баги в отображении могут быть, типа скруглённые углы, бордеры и тд. На iOS сайт будет по факту мертвым и не рабочим, на Android более менее.
Alexandr Gusakov
вопрос не в наличии завершающих скобок, а в их количестве, такая вложенность выглядит несколько дико
Adv0cat
Если у тебя скобочкофобия, пиши на питоне
Serge Shkurko
елси не писать все приложение в одном виджете, то их кол-во может быть вполне приемлемым
Alexandr Gusakov
эта штука назывется bracket hell. Это плохой стиль. если вы не считаете вот такое проблемой. то удачи.
Олжас Сулеймен
А вы пробовали не делать вложения больше 3? И разносить все по полочкам
Alexandr Gusakov
я только выясняю, просто если это норма во flutter, то это точно гиблая тема, и не дай бог потом такое рефакторить
Evgeny Cherkasov
Кстати а как лучше делать декомпозицию? Просто функции? или создавать классы?
Evgeny Cherkasov
Иде (во всяком случае Android studio) для каждой завершающей скобки показывает к чему она относится. Так что по факту ничего страшного в этом нет
Adv0cat
Так можно написать и в обычном программировании, когда не разносят код по функциям и делают кучу ифов в одном месте, ровно такой де код получить можно... в примерах так делают, чтобы было понятней и наглядней в одном месте, но в реальности создаете Виджетов и выносите туда логические компоненты, а это чтото типо вынесения в функции кода. Принцип композиции такой себе, поэтому я и говорю, боитесь скобочек, идите в питон, там их нет почти вообще
Adv0cat
Виджеты... у вас же по сути эти скобочки это елементы в элементах в элементах, тогда виджет ЛистАйтем, в котором строка и иконка, будет хорошим дополнением к вашему коду :)
Alexandr Gusakov
я не боюсь скобок, я спросил это норма языка или есть возможность раскидать это красиво
Adv0cat
но если не елементы скобочками покрылись, то в функции тоже можно ;)
Виталий
В этом то и суть, делайте проще, делите виджеты, выносите все так чтобы не было такого ада
Олжас Сулеймен
Никто не придумал ещё что нит похожее на qml?
Adv0cat
всегда есть возможность сделать красиво и пугаться не стоит ??
Adv0cat
а мне нравится описание юай в коде, а не в этих сраных xmlях...)
Alexandr Gusakov
вообщем нашел материал по решению. загуглил по фразе flutter why so many brackets . Здесь походу ссылки не проходят
Evgeny Cherkasov
Ну если лист итем это дерево из стандартных виджетов, стоит ли его создавать как отдельный класс-виджет? Если он реализует какую то уникальную функциональность, то понятно - лучше создать отдельный класс
Adv0cat
Всё зависит от вас, вы когда в ООП создаете классы, какими правилами руководствуетесь, что нужно выносить функционал в новый класс или в новую функцию?)) Так и тут, по сути виджет некое подобие класса, а функции остались функциями :)
Alexandr Gusakov
в любом случае nativeScript на текущий момент выглядит привлекательней. Погоняю обе, на первый взгляд пока у флаттер недостатков больще чем профита
Adv0cat
Ну ту по сути в виджет выносить нужно ui, а логику (типа генераций чегото) в приватные функции)
Adv0cat
мда) ваше авторитетное мнение нам важно, пишите, если вдруг чего ??
Evgeny Cherkasov
Я пока пришел к тому, что если данный кусок юи будет использоваться в разных местах, то делаю как отдельный виджет его. А если нужно только структурировать большой виджет (избавиться от скобок), то выделяю логические блоки в отдельные функции. Интересно как другие люди делают.
Alexandr Gusakov
Вы представляете все сообщество?
Adv0cat
ни в коем случае!
Max
К слову, от brackets hell можно избавляться делением своего кода на более мелкие части.
Adv0cat
И это логичный вывод!)
Max
Логичный вывод из чего, лол?
l
из всего что было написано сверху
Artem Sisetskyi
[
"Всем привет и хорошего дня! \n\nВозможно кто-то сможет подсказать: столкнулся с задачей перемещения drag-end-drop’ом и поворота виджета. Накидал реализацию компоновкой Stack, Positioned, Draggable – вот гитхаб гист ",
{
"type": "link",
"text": "https://gist.github.com/Frozmen/367bafd650d2b8c70179388cde00342d"
},
". Виджет который нужно перетаскивать и крутить выглядит след образом и состоит из Column([Image, Container, Image])\n \nЕсть два вопроса:\n1. Как сделать перетаскивание (drag-end-drop), только когда юзер тянет за левый нижний край (стрелки вправо\\влево)?\n2. Как реализовать ротейтинг всего виджета относительно центра, когда юзер начинает тащить за правый верхний край?"
]
Denis
Вечер добрый. Есть вопрос: как сделать правильно чтоб видео которое хранится на сервере в России передавать в приложение чтоб качество сохранилось но и нельзя было скачать
Denis
В каком формате хранить видео
Max
все что передается можно скачать
Denis
Я видел видео на сайте как передаётся видео фрагмента и в результате чего толку скачивать нет его
Max
Что значит нет толку. Скачать можно? Можно
Denis
Не знаю как правильно назвать но когда я начал его скачивать то скачивал ось видео по секунде
Denis
А само видео на час и смотреть невозможно было. Кто-то сталкивался с таким форма атом подачи видео
Denis
Видео урок там был. А вот каким форматом организовано чтоб от скачивания толку не было забыл.
Sergey Salnikov
[
"только виджеты, потому что при rebuild'ах функции всегда будут создавать новые инстансы виджетов\n\nПс щас ссылку найду\nUpd ",
{
"type": "link",
"text": "https://stackoverflow.com/questions/53234825/what-is-the-difference-between-functions-and-classes-to-create-widgets"
},
""
]
Олжас Сулеймен
blob stream наверное вроде ну и их скачать можно
Evgeny Cherkasov
[
"Почитав ответы и комментарии по ссылке, а также применив собственную логику, не могу сделать такого вывода.\nНапример есть такой виджет:\n",
{
"type": "pre",
"text": "@override\n Widget build(BuildContext context) {\n return Column( \n children: [\n Container(\n child: Text('Header')\n ),\n Container(\n child: Text('Content')\n )\n ],\n ); \n }",
"language": ""
},
"Разве не будет эквивалентным сделать это так:\n",
{
"type": "pre",
"text": "@override\n Widget build(BuildContext context) {\n return Column( \n children: [\n _header(), \n _content()\n ],\n ); \n }\n\n_header() {\n return Container(\n child: Text('Header')\n );\n}\n\n_content() {\nreturn Container(\n child: Text('Content')\n );\n}",
"language": ""
},
""
]
Sergey Salnikov
Я в дискуссию вступать не буду, нет так нет, читай доку как работает ребилд
Evgeny Cherkasov
Ну ссылка была не на доки. Если есть ссылка где это описано - почитаю конечно
Sergey Salnikov
На medium есть статья от разработчицы flutter, но я ссылку забыл забукмаркать и не могу найти сходу. Эту сохранил Ещё раз повторюсь, если нужны пруфы, придётся капать. Не веришь моему ответу, проверь
Denis
[
{
"type": "link",
"text": "https://m.youtube.com/channel/UCDCFIqDZ1QUqivxVFQDxS0w/videos"
}
]
Denis
Я вот такой знаю канал. Может это он?
Evgeny Cherkasov
[
"Ну вот копаюсь. Начал с официальных доков:\n",
{
"type": "code",
"text": "Tip: To minimize the visual confusion that can result from heavily nested layout code, implement pieces of the UI in variables and functions."
},
"\n",
{
"type": "link",
"text": "https://flutter.dev/docs/development/ui/layout"
},
""
]
Evgeny Cherkasov
Пишут, что пожалуйста разбивайте на функции и переменные
Sergey Salnikov
[
{
"type": "link",
"text": "https://flutter.dev/docs/testing/best-practices"
}
]
Sergey Salnikov
Avoid overly large single Widgets with a large build() function. Split them into different Widgets based on encapsulation but also on how they change: The traversal to rebuild all descendents stops when the same instance of the child widget as the previous frame is re-encountered
Sergey Salnikov
[
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/19269"
},
"\nДискуссия на flutter GitHub\n\nПарень уже запилил либу \nдля кодгена из функции в виджет для уменьшения бойлерплейта flutter_functionsl_widget\n\nА вот его описание на medium \n",
{
"type": "link",
"text": "https://medium.com/flutter-community/use-functional-widgets-in-flutter-to-reduce-boilerplate-code-9e815c2ddb94"
},
""
]
l
[
"может кто подсказать, потерял ссылку, по синтаксису новому где в List вставляем элемент после проверки условия?\n",
{
"type": "bold",
"text": "upd. "
},
"нашёл ",
{
"type": "link",
"text": "https://medium.com/flutter-community/whats-new-in-dart-2-3-1a7050e2408d"
},
""
]
Sergey Salnikov
Не помню с какой версии Дарта, но давненько уже [if(cond) Widget]
Serge Shkurko
Скоро еще extensions методы подъедут
Serge Shkurko
Жду не дождусь
Serge Shkurko
И typedef не только для функций
Igor
Кто-нибудь знает есть ли для Дарта готовая либа чтоб числовые значения в прописан преобразовывать и даты тож? И на русском яз. есть такое? Или самому с нуля писать придется?
Igor
Я имею ввиду 123 - сто двадцать три, и т.п.
Ars
[
{
"type": "link",
"text": "https://morpher.ru/ws3/"
}
]
Igor
О, спасибо. А библиотеки подобной Humanizer в C# и в джаве нет, похоже...
Ars
Они там вроде xml держат, можешь его себе взять и юзать без запросов к апи
Stanislav Sagan
[
"Здравствуйте, подскажите что за штука ",
{
"type": "code",
"text": "AbsorbPointer"
},
" А то поиск по этому чату дал только 1 результат, и я все равно не понял"
]
Stanislav Sagan
[
"Аля ",
{
"type": "code",
"text": "pointer-events: none"
},
" ?"
]
Max
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/55430842/flutter-absorbpointer-vs-ignorepointer-difference"
}
]
Stanislav Sagan
Понял, спасибо)) Хм.. Обычно я для таких целей просто заворачивал/не заворачивал в Inkwell либо устанавливал/не устанавливал event-функцию) Но спасибо, может будет полезно
recvec
Доброго вечера! Существует проблема с замораживанием работы приложения при длительной выкачки и парсинге Json (каждой 2 секунды получается с сервера порция из 50 записей при общем количестве 60 тыс). В андроиде происходит простая замедление, на ios после загрузки 40 тыс программа крешиться. Узнал о существовании compute и work manager, однако они требуют размещения функций глобально или со статическим модификатором, не очень подходит к моей архитектуре. Существуют еще какие-то способы избежать эту проблему? Спасибо.
Max
Это происходит асинхронно?
Stanislav Sagan
Я тебя уже с этой темой видел) Хех) по идее, переосмысли приложение свое.. Или ты 60к записей хочешь ложить в ОЗУ телефона?
Stanislav Sagan
+ может быть у тебя утечка памяти где-то..
Stanislav Sagan
В общем попробуй писать свои данные в хранилище, и вытягивать от туда по надобности, а так это гадание что у тебя пошло не так
Daniil S
[
"Всем привет, написал либку для изолятов. Ридми еще не успел переписать, но вот попробуйте: ",
{
"type": "link",
"text": "https://github.com/Renesanse/worker_manager"
},
" Очень нужен фидбек"
]
Daniil S
[
{
"type": "link",
"text": "https://pub.dev/packages/worker_manager#-readme-tab-"
}
]
Stanislav Sagan
Я даже не знаю что такое изоляты.. отдаленно похоже на redux, но в целом - я не понял что оно такое(
Stanislav Sagan
[
{
"type": "link",
"text": "https://pub.dev/packages/flutter_isolate"
},
"\n\nЭто типа потоки? Типа Worker в js? Или ошибаюсь?"
]
Stanislav Sagan
А, понял, таки да
Р????????????????? ??????????????????у???????? ????????????????? К????? ????????????? ??????????????????у?????????????? ?? ?? ???
[
"Всем привет, вот только что прочитал правила сообщества, думаю я сейчас ничего не нарушу. Я создал только что телеграм-канал, который посвящен различным ресурсам/материалам по Flutter и щепотку Dart. Буду стараться вылаживать все как можно чаще. Буду рад, если вступите. Вот ссылка ",
{
"type": "link",
"text": "https://t.me/flutter_resources"
},
" \nВсем добра)"
]
Hellomik
хай привет кто знает как называется компонент который типа listview только для 2d карты типо? точно свою мысль выразит не могу, несто похожее
Hellomik
типа listview только для 2d
Hellomik
что можно было по x и y оси двигать
Hellomik
нужно для системы бронирование мест (а именно админ часть )
Hellomik
я знаю есть grid view но его можно скролить ?
Serge Shkurko
Scrollable ?
Hellomik
спс чекну к вечеру
Hellomik
Кто может дать свое мнение на счет системы бронирование мест(админ панель CmS)
Hellomik
как лучше его сделать что бы он был scrollable
Hellomik
или размер статичный а внутренние элементы одного размера и динамичные
admin
если для мобилок - ищешь похожее у потенциальных конкурентов - делаешь так же +-
Hellomik
я не могу найти именно админ панелькю у других
admin
можно такое сделать в горизонтальном режиме
Sergey Ozeranskiy
Есть апи сервисов через которые можно создавать схемы залов
Aleksandr Mishchenko
Если сложный скролл с несколькими контейнерами планируется, то CustomScrollView со сливерами. Если простой, то GridView. В оба случая scrollDirection: Axis.horizontal
Krat0S
У меня хуже проблемка, на 13й айоси, пустой список контактов возвращается(
Vitaly Pashichev
На андройде в нативе тоже возвращает дубликаты.
Serge Shkurko
может быть они разделяются на контакты с номерами телефонов и контакты из мессенджеров \ соцсетей?
Artem Shkryab
ValueListenableBuilder который слушает 2 и больше ValueNotifier, есть что-то?
Krat0S
[
"О, стоило тут пожаловаться, как мне в ишью ответили)))\n",
{
"type": "text_link",
"text": "https://github.com/lukasgit/flutter_contacts/issues/2?email_source=notifications&email_token=AB6TYBYV4RJ6LMB3G3TWTS3QIXVEPA5CNFSM4IFVUYHKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6GMTZQ#issuecomment-529320422",
"href": "https://github.com/lukasgit/flutter_contacts/issues/2?email_source=notifications&email_token=AB6TYBYV4RJ6LMB3G3TWTS3QIXVEPA5CNFSM4IFVUYHKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6GMTZQ#issuecomment-529320422"
},
""
]
Evgeny Cherkasov
[
"как в Dart проверить String на пустое значение?\nчто то более краткое чем ",
{
"type": "code",
"text": "str != null && str.isNotEmpty"
},
" есть?"
]
Олжас Сулеймен
нет тут вместо false может вернуть null
Roman Petrov
Тогда надо обязательно сравнение делать, а то в случае str == null результат будет null
Roman Petrov
Если сравнение с false/true сделать — можно обойти
Anton Zheltov
[
"bool isStringNOTEmpty(String s){\n ",
{
"type": "bold",
"text": "try "
},
"{\n ",
{
"type": "bold",
"text": "if "
},
"(s != ",
{
"type": "bold",
"text": "null"
},
"){\n ",
{
"type": "bold",
"text": "if "
},
"(s\n .toString()\n .",
{
"type": "bold",
"text": "length "
},
"> 0) {\n ",
{
"type": "bold",
"text": "return true"
},
";\n } ",
{
"type": "bold",
"text": "else "
},
"{\n ",
{
"type": "bold",
"text": "return false"
},
";\n }\n } ",
{
"type": "bold",
"text": "else "
},
"{\n ",
{
"type": "bold",
"text": "return false"
},
";\n }\n } ",
{
"type": "bold",
"text": "catch "
},
"(e) {\n print(e.toString());\n ",
{
"type": "bold",
"text": "return false"
},
";\n }\n}"
]
Vsevolod Krasnov
можно улучшить: str?.isNotEmpty ?? false
Олжас Сулеймен
а зачем делать toString() если на вход строка? тогда уж (dynamic s)
Олжас Сулеймен
[
"bool isStringNotEmpty(Object o){\n ",
{
"type": "bold",
"text": "try "
},
"{\n ",
{
"type": "bold",
"text": "return o != null && o"
},
".toString().isNotEmpty;\n } ",
{
"type": "bold",
"text": "catch "
},
"(_) {}\n",
{
"type": "bold",
"text": " return false"
},
";\n}"
]
Karen
bool isNullOrEmpty(Object o) => o == null || "" == o;
Evgeny Cherkasov
[
"оператор ",
{
"type": "code",
"text": "??"
},
" это проверка на ",
{
"type": "code",
"text": "null"
},
"?"
]
Vsevolod Krasnov
почти, если первое выражение будет null, то, вернется выражение после ??
Krat0S
[
{
"type": "link",
"text": "https://dart.dev/codelabs/dart-cheatsheet#null-aware-operators"
}
]
Evgeny Cherkasov
[
"это общая практика использовать ",
{
"type": "code",
"text": "str?.isNotEmpty ?? false"
},
"? типа как в Java ",
{
"type": "code",
"text": "TextUtils.isEmpty(str)"
},
"?"
]
Max
Не общая, но null-aware
Alex Molchanov
Никто не сталкивался, авторизация firebase для iOS? Вроде до этого чекали, норм. Сейчас развернули приложение, мол, iPad 12.4.1 firebase пишет invalid token ?? и скрин прислали. Теперь не пойму, надо как-то эмулировать, что бы ошибка появилась и у меня или это прикол Гугла был, разовая акция?! ??
Evgeny Cherkasov
[
"кто нибудь знает можно ли как то получить значения по умолчанию для параметров ",
{
"type": "code",
"text": "Duration"
},
" и ",
{
"type": "code",
"text": "Curve"
},
", которые нужны в методе ",
{
"type": "code",
"text": "animateToPage"
},
" в ",
{
"type": "code",
"text": "PageController"
},
"?"
]
Влод
мне нужно в http post отправить массив
Влод
то есть там url encoded массив
|