Программирование : Dart & Flutter по-русски
IB Akhrorov
Облачный эмулятор несоветую так как нужен хороший инет и норм комп
Влод
вообще ну много проблем с 4гб рам
Aziz
genymotion тоже плохо работает
Влод
ну реальный вариант это надыбать мобилку
Влод
бу какую-нибудь совсем дряную
IB Akhrorov
Если вы с Ташкента за 450 или 500к можете купить redmi 4x
Влод
я вот андроид бесплатно достал себе. просто у друга с треснутым экраном
Eugene
С андройд эмулятором и на 8гб так себе.
Eugene
Работает почти также как эмулятор айфона 6, запущенный в макос, запущенной в vmware
IB Akhrorov
Значит у вас не мак , и есть виртуалька , в виртуалке еще одна виртулька ?
IB Akhrorov
Как поднимает ноут
Eugene
Ага, потешно, но работает даже айфон x
Eugene
Разрабатывать не очень, а вот скриншоты сделать вполне
IB Akhrorov
Совет установите lubuntu занимает 256 мб озу сама система, туда виртуалька mac os и добавить его на автозапуск , да здравствуй быстрый mac os
IB Akhrorov
Только запуск системы занимает 15-30 сек , но зато не тормозить все работает
Eugene
Хорошая идея, но я разрабатываю под андройд в винде, а под ios просто проверяю, собираю и отправляю в апстор
zinge ??
Поподробнее можно о "виртуалка Mac os" ?
IB Akhrorov
Сколько занимает компиляция?
IB Akhrorov
Что более детально обяснить
Eugene
Минут 20, но там много firebase берёт
IB Akhrorov
Есть система линукс на дистрибутиве lubuntu она предназначена для слабых ноут , но она поднимает все программы для linux, и поэтому можно установить любую виртуальную систему на нее,например vmware и туда mac os можно установить
Eugene
[
{
"type": "link",
"text": "https://brofox86.github.io/macos-plus/ustanovka-macos-na-virtualnuyu-mashinu.html"
},
" вот по этой инструкции ставил"
]
zinge ??
Ссылку на гайдик достаточно. А то у меня незааодится в kvm упорно.
IB Akhrorov
Thank you for data which has been announced recently
zinge ??
Плин как с мобильного Телеграмм кинуть спам репорт? Есть кнопка заблочить контакт. Или её там ищу.
Michael Nikolashin
[
"Check out this Meetup with GDG Moscow ",
{
"type": "link",
"text": "http://meetu.ps/e/H1tJK/K2W0N/d"
}
]
Constantine
ай красавцы )
Constantine
красивый спам
Hellomik
Хай как исправить эффект
Олжас Сулеймен
есть же билд контекст, это по сути родительский виджет, в самом билде размер и позицию получить нельзя, так как контекст ещё не отрендерился, но в кликах он уже готовый
Yerzhan
Ребята, как в showModalBottomSheet (isScrollControlled: true) сделать, что-то подобное как SafeArea?
Yerassyl
почему такая ошибка выходит
Dmitri Alternativnov
покажи лог с консоли полный
Виталий
У тебя в value нулл передаётся
Виталий
Там тебе условие показывают, из конструктора виджета
Yerassyl
можно в начале в initstate вызвать
Виталий
Тебе просто надо решить проблему: не билдить виджет, пока value не соответствует условию
Aleksandr Mishchenko
[
"а как насчет такой конструкции?\n",
{
"type": "pre",
"text": "class Parent {\n const Parent();\n final List childs = const [];\n}\n\nclass Child {\n final Parent parent;\n Child({this.parent = const Parent()}) {\n this.parent.childs.add(this);\n }\n}",
"language": ""
},
""
]
Yerassyl
Гайс, яндекс карту кто-нибудь юзал?
olzhas tatagulov
Была такая идея, но это тоже полумера. Лучше уже с мутабельным полем работать чем с массивом
Aleksandr Mishchenko
[
"Не совсем понимаю что вы хотите сделать (именно идейно). Можно их привести к одному виду, но это уже рекурсия какая-то\n",
{
"type": "pre",
"text": "class Parent {\n final Child child;\n const Parent({\n this.child = const Child(parent: this)\n });\n}\n\nclass Child {\n final Parent parent;\n const Child({\n this.parent = const Parent(child: this)\n });\n}",
"language": ""
},
""
]
olzhas tatagulov
Я как уже говорил я пришел из мира java, там это делается просто. В Dart это не поддерживается. Ну и ок. Такой дизайн языка. Я задал вопрос здесь, что бы удостоверится что это так.
olzhas tatagulov
А идея простоая, создать дерево, и что бы родители и потомки имелли друг на друга ссылки.
olzhas tatagulov
И желательно ссылки бы были имутабельными.
olzhas tatagulov
В Dart к сожалению можно сделать иммутабельновть только в одну сторону.
Aleksandr Mishchenko
Понятно. Скорей всего вы правы.
Влод
Это довольно типичная проблема иммутабельности
Fearless Cry
Я думал вам нужна эта информация где-то на уровне build'а
Олжас Сулеймен
при кликах по виджиту
Fearless Cry
Ну контекст решит. А почему глобал кеи нельзя использовать?
Олжас Сулеймен
у меня ругается мол нельзе два одинаковых стейта юзать
Олжас Сулеймен
у меня много активных виджетов на страничке
Fearless Cry
Хм. Ну может тогда посмотреть в сторону других ключей
Олжас Сулеймен
и нужно знать их позицию при фокусе и кликах
Fearless Cry
Для анимации?
Олжас Сулеймен
другие ключи контекст не тянут, так проще
Олжас Сулеймен
в глобале получается тот же контекст
Grabli66
Товарищи! Есть ли документация как собрать dart sdk с musl libc для linux x64?
FatShibe
А кто-нибудь может подсказать как в стейт передать стрингой имя поля стейта, которое надо изменить? Если есть несколько текст филдов, но виджет для них один
olzhas tatagulov
Всем привет! У меня есть задача показываеть пользователю ошибку, если при отправке запроса на сервер произошла ошика. Отправка запроса это Future. И соответственно я использую catchError.
olzhas tatagulov
someAction().catchError((error) => ErrorHandler.errorHandler(error, context));
olzhas tatagulov
В errorHandler просто показываею alertDialog
olzhas tatagulov
Проблема в том что таких обработчиков у меня много.
olzhas tatagulov
и везде повторяется вот это секция .catchError((error) => ErrorHandler.errorHandler(error, context));
olzhas tatagulov
можно как то глобально это отрабатывать?
olzhas tatagulov
Не совсем понятно что вы хотите сделать. И зачем вам это нужно. Может поподробнее задачу опишите?
FatShibe
У меня есть несколько текстовых полей, я хочу обновлять стейт по мере заполнения полей и в конце по хэндлеру кидать этот стейт в апи. Есть другой подход?
Aleksey
Я подозреваю, что никто не понял твой подход
admin
[
{
"type": "link",
"text": "https://www.woolha.com/tutorials/flutter-dart-convert-serialize-object-to-json"
}
]
FatShibe
Так причем тут сериализация, мне стринги с текстфилдов собрать надо, как я их потом сериализовать буду это дело десятое
FatShibe
Может я чего путаю, конечно
admin
рефлексии на flutter вроде нет, есть образец кода?
olzhas tatagulov
А чем вам подход с TextEditingController не устраивает?
olzhas tatagulov
[
{
"type": "link",
"text": "https://flutter.dev/docs/cookbook/forms/text-field-changes"
}
]
Влод
куда ты его будешь кидать это уже дело десятое
Влод
ну рил сложно зацепиться о чем ты
FatShibe
Так а чем контроллер от onChange() отличается?
Влод
мб у тебя динамически поля создаются
Влод
просто потом с каждого контроллера собираешь текст в единой функции onChange
olzhas tatagulov
контроллер слушает изменения. На каждый ввод символа реагирует.
olzhas tatagulov
onChage срабатывает изменения всего поля.
FatShibe
[
{
"type": "pre",
"text": " MyCard(\n shadow: Shadow.soft,\n borderRadiusValue: 0,\n padding: EdgeInsets.all(16),\n child: Column(\n children: [\n\n _createTextFieldGeneral(\"Name\", name),\n // _createTextFieldGeneral(\"Email address\", \"natkingcole@gmail.com\"),\n // _createPasswordField(\"Password\", \"12345678\", context),\n _createTextFieldGeneral(\"Phone number\", phone),\n _genderField(gender),\n _birthDateField(context, dob),\n\n ],\n ),\n ),\n\n Widget _createTextFieldGeneral(String label, String value){\n return _textFieldHolder(TextField(\n focusNode: FocusNode(),\n textCapitalization: TextCapitalization.words,\n controller: TextEditingController(text: value),\n textAlign: TextAlign.start,\n decoration: InputDecoration(\n contentPadding: EdgeInsets.symmetric(horizontal: 16, vertical: 12),\n labelText: label,\n // prefixIcon: Icon(prefixIcon, color: Colors.black54),\n labelStyle: TextStyle(color: Colors.black87),\n border: InputBorder.none,\n ),\n // onEditingComplete: (val){print(['aaa0', val]);},\n // onSubmitted: (val){print(['aaa0', val]);},\n onChanged: (val){\n // print(val);\n setState(() {\n switch(label) {\n case 'Name': name = val; break;\n case 'Phone number': phone = val; break;\n }\n });\n },\n ),\n );\n }",
"language": ""
}
]
FatShibe
вопрос в том, как мне в setState прокинуть label, вот и все
FatShibe
в реакте есть такая штука для динамеских полей, вот я и интересуюсь можно ли во флаттере сделать так
Влод
ну лучше бы мапу создать и юзать скришоты
Влод
ну ок ты делаешь свич по лейблу
Влод
и он же должен работать
FatShibe
ну можно ли без свичей?
Constantine
[
"сделай ",
{
"type": "code",
"text": "if ()"
},
" )))))"
]
Влод
_userMap[name] = val
FatShibe
и прокидывать мапу в стейт?
Влод
потом конвертни в обьект точно таким же образом как джсон конвертишь
Влод
ты смог завести в стейте поля name и phone но не можешь _userMap?
olzhas tatagulov
Мне кажется ты зря сделал такую функцию.
olzhas tatagulov
Лучше продублировать
admin
по моему проще класс с моделью сделать
olzhas tatagulov
у тебя сейчас в срейте разница, а завтра будет разница в офрмлении или еще что нибудь и будешь решать проблемы с кучей if
FatShibe
ну мне достался код, что поделать
olzhas tatagulov
переделай.
FatShibe
мы здесь такого не делаем.жпг
FatShibe
а тогда еще такой вопрос, похоже, что при обновлении стейта курсор прыгает в начало поля, это поведение как-то можно изменить?
FatShibe
я имел в виду, что в реакте, например, можно сделать вот так
Влод
возможности динамики
Влод
reflect(state). setField(name, value)
KeepOnSmiling ??
Ребят, как с Scaffold+DefaultTabController справится? У меня настройки дефолтные, но на некоторых Xiaomi он занимает ОГРОМНУЮ часть экрана, проставляет просто гигантские отступы. У заголовка. Что делать? Как это управляется?
KeepOnSmiling ??
Несколько часов искал решение в инете - пусто
KeepOnSmiling ??
У меня почти пустой ТабБар занимает четверть экрана. В его отступы можно было бы разместить ещё 3-4 надписи, нафига он такие отступы делает...
KeepOnSmiling ??
Как можно по-другому использовать DefaultTabBar?
Ars
Парни, посоветуйте либу для воспроизведения аудио-стрима по url.
Ars
на него поглядывал, ок, попробую)
KeepOnSmiling ??
Или может TabBar можно заюзать без Scaffold'а?
KeepOnSmiling ??
Оно даже в туториале дохрена отступов. Но у меня эти First Tab стоят вертикально центрировано и внизу ещё отступ есть. Но даже и AppBar with Tabs имеет огромные отступы. Это можно скорректировать?
KeepOnSmiling ??
Попытался чайлдом DefaultTabController сделать Column и там прописать TabBar + TabBarView, но не работает. Видать так нельзя сделать :(
Влод
ээ ну если ты про то можно ли их как-то кастомно разместить - можно
Влод
они у меня в стеке таббар над таббарвью
FatShibe
[
"я пока нашел только такое решение: ",
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/11416"
},
""
]
Федор
Здравствуйте! Я либо чего-то не понимаю, либо я дурачок. Что надо вводить вместо "generator-name"?
Олжас Сулеймен
пробовали вводить просто stagehand?
Олжас Сулеймен
там будет список доступных шаблонов
Олжас Сулеймен
вот и вводите нужный
Олжас Сулеймен
в новой папочке
Олжас Сулеймен
без скобочек
Федор
Логичный вопрос в пол десятого: с чего начать изучение?
Davron Asrorov
Вечер добрый! Есть тут кто работал с reorderable листами? Конечная цель, сделать лист с item_1 у которого есть children item_2. Эти дети должны между собой сортироваться и между родительскими item-ами. Сталкивался кто?
Artem Shkryab
Не сталкивался, но можно что-то придумать, если немного подробней опишите задачу. Это список списков?
Artem Shkryab
Анимированно перемещать?
Davron Asrorov
Да drag&drop как бывает обычно. Зажимаешь, перетаскиваешь. Для обычного листа есть либы, но не одна не поддерживает более сложную логику. Как в моем случае, между несколькими листами. Есть ли идеи?
Федор
С чего начать изучение Дарта?
Artem Shkryab
Так это два отдельных листа? Можно сортировать в пределах одно листа, а можно с одного перетянуть в другой? Верно?
Davron Asrorov
Да техничеси так и получается
?? ??????????????????????????
С флатера ??
Федор
А если не для телефонов?
Davron Asrorov
Только листа не два, а больше. И надо не забывать что все это скрооиться должно
?? ??????????????????????????
С флатера ??
?? ??????????????????????????
Можешь написать калькулятор, а можешь прочесть доку
?? ??????????????????????????
Зачем тебе дарт? Вот с этого и начни
Artem Shkryab
Есть драг енд дроп, есть драг таргет, или дроп таргет виджет, не помню точно, вот оборачиваешь списки в них
Федор
Это я уже с одним специалистом обскждал
?? ??????????????????????????
Напиши на дарте жизнь с бесконечной картой, давно не видел такой игры)
Artem Shkryab
Первая моя приложуха на нативе на андроид)
Федор
Ну через год-полтара напишу??
?? ??????????????????????????
Там часов 8 надо не больше
Ярослав Капустин
Это что за игра ?
?? ??????????????????????????
[
{
"type": "link",
"text": "https://ru.m.wikipedia.org/wiki/%D0%98%D0%B3%D1%80%D0%B0_%C2%AB%D0%96%D0%B8%D0%B7%D0%BD%D1%8C%C2%BB"
}
]
Федор
Ну, я думал что-то типа Майнкрафта)
Artem Shkryab
Интересная задача.... Колоны в скроле... Драг таргет. Два на каждый итем в колонке, сверху и снизу попалам, что бы следить в какую позицию колоны дропать, у каждого свой Кей, должно быть норм
Artem Shkryab
Если верхний 4 то в 4 позицию, если нижний то в пятую и тд
Artem Shkryab
Будет как джира или трелло. Можно что-то придумать что бы они ещё розьезжались при нависании над ними нового итема... Освобождая для него место
Artem Shkryab
Дарт не для фронта? Хочешь консольные апки делать? Бек?
KeepOnSmiling ??
Если Firebase подключать, используя Firebase_Admob, нужно ли добавлять что-то в .gradle конфигурацию? У меня возникают дубли классов при попытке повторить шаги из Гугла. Может Firebase_Admob уже имеет подключенные классы?
Vsevolod
нужно группу по инвайтам сделать
KeepOnSmiling ??
[
"Подскажите, как вы подключали Firebase Analytics к android-проекту? Я скачал google-services.json, положил его в корневую директорию проекта, дописал зависимость app/android/build.gradle:\n",
{
"type": "pre",
"text": "classpath 'com.google.gms:google-services:4.2.0'\n\n",
"language": ""
},
"Использую плагин Firebase_Admob, в проекте есть:\n",
{
"type": "pre",
"text": "FirebaseAdMob.instance.initialize(appId: App.admobAppId, analyticsEnabled: true);\n",
"language": ""
},
"Но на моменте проверки связи приложения с гугл-сервисами ничего не происходит. Процесс просто бесконечен, видимо связи нет. Что я возможно упустил?\n\nВроде ошибок нет, но чёт и толку тоже :)"
]
Artem Shkryab
Гугл сервис плагин под депенденси в апп гредле?
Artem Shkryab
Название пакетов совпадают.. в манифесте и в фаербейсе?
Artem Shkryab
Джисон не в корневую, а в апп в андроид модуле
Artem Shkryab
Или все же в корневую андроид модуля, щас проверю
KeepOnSmiling ??
Первые два пункта - да, оно в секции buildscript/dependencies/..., и идентификаторы пакета совпадают
Artem Shkryab
Да, в папку app
KeepOnSmiling ??
Хм, и так, и так попробовал, но всё равно не может завершиться процесс "Проверка связи между приложением и серверами Google"... А нужно ли где-то прописывать этот google-services.json?
KeepOnSmiling ??
Кстати, а кнопку Sync Now в студии обязательно жать для синхронизации или можно просто запустить приложение в релиз режиме (предварительно удалённое с телефона) ?
Artem Shkryab
Прописывать не нужно, а вот полностью перезапустить приложение нужно
KeepOnSmiling ??
Уже сделал, но что-то всё равно не удаётся связать их
KeepOnSmiling ??
[
"И ",
{
"type": "code",
"text": "flutter clean"
},
" уже делал, и приложение удалял, ничего не помогает.."
]
KeepOnSmiling ??
Использую Firebase_Admob - реклама грузиться успешно
Artem Shkryab
Тоесть реклама работает а в фаербейсе спинер крутиться?
KeepOnSmiling ??
Именно так..
Artem Shkryab
В фаербейсе есть статистика использования, посмотри не пусто ли там
KeepOnSmiling ??
Это где такое?
Artem Shkryab
Где то там есть, на главной странице проекта, там статистика установок... Если там не 0, то забей, все ок
KeepOnSmiling ??
[
"Там ещё в настройках приложения в Firebase есть \"идентификатор приложения (используйте при обращении в тех поддержку)\" - а случаем не этот ли идентификатор нужно передавать в ",
{
"type": "code",
"text": "FirebaseAdMob.instance.initialize(appId: сюда);"
},
" ?"
]
KeepOnSmiling ??
Я туда указывал адмобовский идентификатор приложения
Artem Shkryab
В манифесте указал?
Artem Shkryab
ca-app-pub....
KeepOnSmiling ??
Да, перепроверил ещё раз - это у меня тоже указано (не тестовый :) )
KeepOnSmiling ??
в этом: android/app/src/main/AndroidManifest.xml
KeepOnSmiling ??
[
"А вот эта строчка:\n",
{
"type": "pre",
"text": "classpath 'com.google.gms:google-services:4.2.0'",
"language": ""
},
"\nона должна быть в android/build.gradle или android/app/build.gradle?"
]
KeepOnSmiling ??
У меня в первом
Artem Shkryab
Скажу так, если бы что-то было не так, реклама не отображалась бы... Можешь попробовать изменить ключ на левый, перестанет работать. Оставь как есть, установи релизную апку на другой телефон, пожмякай, посмотри статистику
KeepOnSmiling ??
Я уже сам не понимаю, что может быть не так, уже по несколько раз проверил, всё совпадает
KeepOnSmiling ??
[
"А нужна ли строчка в android/app/build.gradle в секции dependencies:\n",
{
"type": "pre",
"text": "implementation 'com.google.firebase:firebase-analytics:17.0.1'",
"language": ""
},
"\n\nИли не нужна? У меня с ней не билдится, покуда видимо сам firebase_admob импортирует firebase-analytics"
]
MrBizor
Знание dart это грубо говоря знание синтаксиса языка. Учится за неделю максимум. Тем есть скилы в разработке. А вот знание flutter это знание платформы, библиотек фреймворков и много чего вообще. На это уже надо много времени.
admin
я dart месяца 3 учил) как первый язык
|