Программирование : Dart & Flutter по-русски
???????
[
{
"type": "mention",
"text": "@robospot"
},
" самое главное забыли)\nПоспрашивайте местную администрацию про использование их приложения в качестве CRM)"
]
???????
Заодно получете ангуляр дарт в вебе и флатер на мобильных)
???????
[
{
"type": "code",
"text": "@bunopus"
},
" <= рискните)"
]
Greg
Всем привет. Как запретить зарядку андроид телефона по usb от ноута на батарейке? Может кто-то подскажет?
Sergey ?
Думаю это сильно vendor specific. На моём Самсунге такой опции нету
Sergey ?
Должно называться что-то типа usb charging
Artyom Nesterenko
Никак, так работает Android.
Artyom Nesterenko
Хотя на некоторых устройствах это возможно.
Artyom Nesterenko
А еще на рутованном телефоне можно, но я ни разу не пробовал.
Greg
Видимо только резать провода или контакты разъёма
Sergey Salnikov
USB стандарт подразумевает коннект пары питания первой, а потом только дата пары. Т.е. обрезать питание может не сработать, но не всё работает в нашем мире по стандарту и есть шансы что сработает, попробуйте и расскажите)
KeepOnSmiling ??
Где лучше объявлять переменную, чтобы видеть её в виджете? Хотел заинжектить её туда, но виджет ведь может перебилдится как-нить и переменная в нём рухнет. Как вы контроллируете такие моменты?
KeepOnSmiling ??
Пока на ум приходит только внешняя статическая переменная :) Она не улетит :) и обращаться можно из виджета всегда
Dmytro Bondarchuk
передавай переменную в виджет с уровня выше
KeepOnSmiling ??
Это да, но если внутренний перебилдится, я не узнаю об этом с уровня выше и не узнаю, что ему нужно переменную освежить А запросить эту переменную у внешнего виджета я думаю не представляется возможным
KeepOnSmiling ??
Неужели статик - лучшее решение? :))
Dmytro Bondarchuk
Если внутренний перебилдится, то ему автоматически подставится та же переменная. И не обязательно она должна быть статической)
KeepOnSmiling ??
А, оно даже так работает. Это очень круто. При этом нужно в стейт-классе хранить переменную или в виджет-классе?
Dmytro Bondarchuk
На сколько я понял, в твоём случае лучше хранить в парент класе)
KeepOnSmiling ??
А как доступаться к такой переменной?
KeepOnSmiling ??
Насколько я вижу, если инжектить во внутренний стейт-класс, то переменная реально не сбрасывается при setState внутреннего класса. Но оно и стейт не пересоздаётся, что хорошо, конечно. Но вдруг и стейт пересоздаться...
Dmytro Bondarchuk
По ситуации смотри
Dmytro Bondarchuk
Можешь описать, что конкретно тебе нужно, и постараюсь помочь)
Кудрат Ибадуллаев
Правильно ли использовать BLoC в StatelessWidget? Если да, где можно вызвать dispose()?
Daniil S
Напишите свой блок и используйте provider
Евгений
Привет у меня чайничий вопрос я правда не могу в дарте провернуть такой трюк? class Slides { static const multiple_choice = "multiple_choice!"; static getEditor(String name) { AbstractSlide cls = editorMap[name] as AbstractSlide; return new cls(); } } //соответствия слайда классам var editorMap = { Slides.multiple_choice: MultipleChoiseEditor, };
Евгений
cls как класс он не воспринимает
Евгений
Тобишь я не могу инстанциировать класс имея класс в переменной
Олжас Сулеймен
через мирроры можно
Олжас Сулеймен
а так сделать для каждого класса функцию которая создает нужный инстанс
Олжас Сулеймен
Slides.multiple_choice: () => MultipleChoiseEditor()
Евгений
точняк, как хак прикольно
Олжас Сулеймен
если все известно то проблем нет, а вот если нет и без мирроров печаль
Олжас Сулеймен
в дев ветке можно собирать бинарники
Sergey Salnikov
[
"Если будешь использовать Provideк не забудь\n",
{
"type": "pre",
"text": "dispose: (context, value) => value.dispose()\n\n",
"language": ""
},
"Мой совет - юзай flutter_bloc BlocProvider и BlocBuilder\nпроблем меньше, если прочитаешь доку по ним"
]
Kit Khilobok
А какой в этом смысл?
Kit Khilobok
Stateless на то и stateless, что у него нет состояния
Gevork Arzumanyan
Всем привет господа там что то то в 1.9 наизменяли в HERO анимашке у кого есть пример или ссылка на статью как это вообще делается сейчас ?
Gevork Arzumanyan
а то работало и перестало (
Gevork Arzumanyan
видел в логе что они теперь прячут родителя, но ка его вернуть ?
Alexey Perelygin
Используется блур?
Sergey ?
как-то одинаково )
admin
можете скинут сылка придложения
Vitali Baukunovich
проект под nda??
(;?_?) Ivan Zhuravlev ???>?
вы же догадываетесь что не смотря на видео с графиками загруженности cpu/gpu - это гадание на кофейной гуще и дебаг по фотографии будет? только если кто-то не сталкивался прям 1:1 с такой же проблемой
Vitali Baukunovich
Конечно понимаю. Но ведь странно, что даже пустой экран так виснет. Хотелось бы найти того, кто сталкивался с подобным
zinge ??
Пиар оплачен хоть?
Vitali Baukunovich
К сожалению, нет
Max
Может там фотки огромного разрешения или элементов в списке много. Даже хз
Sergey Ivanov
Всем привет. Я получаю с помощью http запроса json массив, типа [1,2,3] как мне можно его обработать и создать из него radio селекты?
Max
Вопрос из разряда: я делаю приложение, подскажите как сделать
Max
dart lang http dart parse json flutter FutureBuilder (?) flutter setstate flutter radio buttons
Sergey Ivanov
да проблема что не понимаю как с этими map работать, а в гугле везде его пихают
Andrey Zubov
ну в дарте вроде даже дока есть по map. с полчаса назад читал :))
Олжас Сулеймен
[1, 2, 3].map((i) => Widget(i)).toList()
Sergey Ivanov
[
"лист это уже будет под ",
{
"type": "code",
"text": "children: ["
},
"] ?"
]
Яўген
Вопрос: появляеться alertdielogue и клавиутура почему-то исчезает, после этого я пытаюсь вернуть клавиутуру командой "FocusScope.of(context).requestFocus(view.commentFieldFocusNode);" по нажатию на кнопку, которая закрывает диалог но не помогает... ЧТо можно сделать, может кто знает?
Олжас Сулеймен
Результат можно передать в чилдрен или [ ..., ...widgetsList, ..., ]
Sergey Ivanov
разве он принимает листы
Sergey Ivanov
ладно, сам поковыряюсь, спасибо
Олжас Сулеймен
в лист можно распаковать итерабл
???????
Смари, я знаю в чем твоя проблема
???????
Запоминай заклинание:
Sergey Ivanov
нашел решение в разы проще )
Олжас Сулеймен
кто работает с ffi?
???????
[
{
"type": "code",
"text": "myList.map((КаждоеЗначение) => ...).cast<НовыйТип>().toList()"
},
""
]
Олжас Сулеймен
сталкивались с NoSuchMethodError: The method 'FfiTrampoline' was called on null. ?
???????
Там где три точечки - преобразование одного значения в другое
Fearless Cry
можно без cast
???????
каст для универсальности, куча ситуевин, когда это будет необходимо и без него работать не будет.
???????
Но в конкретном случае, скорее всего заведется и без каста. Но ваще .cast() - лучший друг .map()
Sergey Ivanov
сделал тупо
Sergey Ivanov
[
{
"type": "code",
"text": "children: [\n Text('$_questionTitle'),\n RadioButtonGroup(\n labels: _answers,\n onSelected: (String selected) => print(selected)\n ),"
}
]
Sergey Ivanov
из json сразу значение берет )
Sergey Ivanov
но гораздо проще )
???????
Мда, не проще разобраться с преобразованием? Тем более это базовая штука и присутсвует вообще мммммаксимально повсеместно?
???????
И не только у списков, но и у потоков
???????
А без потоков лучше даже не начинать знакомиться с флатером.
Sergey Ivanov
ну вроде пока без них обхожусь )
Sergey Ivanov
я понимаю что пока все херово , но времени нет что то новое понимать, надо побыстрому запилить )
Sergey Ivanov
по накатанной схеме, вроде 90% приложухи запилил)
Andrey Zubov
не совсем понимаю разницу fold и reduce у Iterable, по идее слишком похожие обработчики, обоими можно сделать одно и тоже
Gevork Arzumanyan
такая же беда была выясннилось что flutter_webview вешает экран точно нет никаких таких виджетов в экране ?
Vitali Baukunovich
нет, на этих экранах нет webview
Gevork Arzumanyan
ну я вообще не про конкретно веб сью имел ввиду )
(;?_?) Ivan Zhuravlev ???>?
И как решили?
Gevork Arzumanyan
решил так теперь вебвью отображается после того как эуран забиндился
Gevork Arzumanyan
вот еще вопрос кстати знатоки, тупой(вопрос) как хз че но я никак понять не могу в чем дело есть экран 1 в нем стоит breakpoint для дебагера открываю из экранна 1 экран 2 c помощью MaterialPageRoute в экране 1 вызывается в этот момент метод build почему так ? и как это избежать ?
Andrey Zubov
сижу дарт изучаю, посути я могу например туже сумму всех элементов что через fold получить что через reduce. вот и не совсем понятно нафига они обе одновременно существуют
???????
[
"Давайте вместе найдем разницу между этим\n",
{
"type": "pre",
"text": "dynamic Iterable.reduce(dynamic Function(dynamic, dynamic) combine)",
"language": ""
},
"\nи этим\n",
{
"type": "pre",
"text": "T Iterable.fold (T initialValue, T Function(T, dynamic) combine)",
"language": ""
},
"\n)))"
]
???????
Объясняю. У тебя есть список неких объектов. Редьюс: На выходе ты получаешь один единственный объект этого типа, например как сумма объектов или как наиболее подходящий. Фолд: На выходе ты получаешь произвольный тип, содержащий произвольное значение. Например новый список заполненный только подходящими значениями.
Andrey Zubov
ну а фолд просто значение?
Andrey Zubov
получается что в случае если у лист тех же int то для суммы всеъ элеменов что я fold использую что reduce на выходе получу тупо один int
???????
Можно решить и через то и через то, да
Andrey Zubov
ну вот это я имел ввиду
???????
> совсем понятно нафига они обе одновременно существую Да ну?)
???????
У вас есть список учеников, вам надо получить из него только список девочек, как вы это через редьюс сделаете?)
Andrey Zubov
ну понятно что всегда можно придумать сценарий при котором они будут давать разный результат, так и придумать сценарий при котором идентичный :)
???????
У вас есть список учеников, вам надо получить самого младшего, уверены, что через фолд это захотите делать, вводя дополнительную проверку на начальное значение?
Andrey Zubov
для этого я скорее всего where использую
Andrey Zubov
для списка девочек из общего я имею ввиду
???????
А еще можете цикл использовать и еще куча чего.
???????
Это все удобный сахар, чтоб не писать сраный бойлерплейт
Andrey Zubov
ну так то да, согласен, раз есть значит есть и сценарий при котором имеет смысл
???????
Дофига таких сценариев, просто надо понимать, что это разные вещи и для разных задач
???????
У стримов вообще все методы это удобная обертка над listen
Andrey Zubov
до них я еще не дочитал :))
???????
а у списков над циклом
???????
ну стрим это растянутый во времени список, а их listen, собственно, растянутый во времени цикл)
Олжас Сулеймен
они еще ленивые, пока лист явно не нужен будет все эти методы не вызовятся
???????
[
"Угу, на выходе там будет ",
{
"type": "code",
"text": "Iterable "
},
""
]
Andrey Zubov
вопрос, есть ли какой-то сакральный смысл при котором int пишется с маленькой, а String с большой?
???????
Поэтому над иногда над не забывать перекастить взад в список
Олжас Сулеймен
Iterable where(bool test(E element)) => WhereIterable(this, test);
???????
String это сложный тип
???????
вероятнее всего исходя из этого
Олжас Сулеймен
и так почти со всеми методами у листов
???????
String всегда был массив char'ов
Andrey Zubov
ну хз, ладно, примем как данность
???????
Короче не парься, это норма, что String почти везде не совсем простой тип)
???????
А еще в дарте есть num, про него частенько забывают и ему обидно)
Yerassyl
кто работал с firebase messaging. у меня версия 1.7 flutter, вот firebase_messaging: ^5.1.6 всегда ругается
Yerassyl
кто нид сталкивался с такой проблемой
???????
В общем я пошел писать обзорную статью по блоку, чтоб всем вопрошающим в этом чяте давать сцылочку со словами "RTFM"
???????
Медиум норм же ресурс для публикации?
(;?_?) Ivan Zhuravlev ???>?
Да. Жги
Illia Kalyuzhnyi
Привет, а кто-то работал с Acessibility, а именно Screen Readers? Интересует общее впечатление просто, от "все очень плохо" до "вообще все без проблем завелось". Спасибо
Alexey
Вы не устаете от того, что в какой-то момент медиум говорит "что-то ты много читаешь, оформляй подписку" и приходится в инкогнито режиме страницу открывать?
Олжас Сулеймен
[
"если кто разбирается, ошибки и советы\n",
{
"type": "link",
"text": "https://gist.github.com/ykmnkmi/365bbd025ae3489211b505bcc45dfe57"
},
""
]
(;?_?) Ivan Zhuravlev ???>?
???>? нет. вероятно мне не так часто на глаза попадаются платные статьи
Yerassyl
есть другие варианты?))
(;?_?) Ivan Zhuravlev ???>?
оформить подписку? =)
Yerassyl
кроме этого конечно -)
Alexey
Среди технических я и не видел платных статей. Просто медиум мягко намекает каждый раз. На Хабре такой фигни нет :)
(;?_?) Ivan Zhuravlev ???>?
ну намеков я не видел на бесплатных статьях. только когда платные начинаешь зачитывать массово
(;?_?) Ivan Zhuravlev ???>?
тогда режет и наафиг шлет
(;?_?) Ivan Zhuravlev ???>?
а платные среди технических есть. не скажу больше или меньше по сравнению с другими областями, но есть ???>?
northelks
это естественное развитие, они замутили платформу, первые пару лет бесплатно, потом пора уже деньгу получать
northelks
хабр ещё жив?.. как-то там особо мало интересных статей, в последние пару лет
Григорий Коваленко
По флаттеру там так вообще нет
Alexey
Ну слишком агрессивно предлагают премиум. Могли бы ограничиться тематической рекламой с ненавязчивым предложением отключить ее за деньги, но видимо, думают, что у всех эдблоки.
Евгений
помоем он из айтишного хабра в швабр для домохозяек превратился
Григорий Коваленко
Почти)
Alexey
Ну статей там прилично по флаттеру.
Alexey
Так на медиуме же тоже для всех типов домохозяек есть статьи.
northelks
в том и суть, что медиум тоже так себе ресурс
northelks
но он хорошо разрекламирован, потому там большая вероятность прочтения статьи
Иван Бросалин
Всем привет. Подскажите как вы инициализуруете bloc (flutter_bloc) в случае необходимости передачи данных в сам bloc для дальнейших манипуляций и хранения результатов. Пока вижу два варианта: конструктор и через event. Какого способа рекомендуете придерживаться?
Ernest Stanbekov
[
"Всем привет, прохожу курс по флаттер. В курсе при создании List, автор создает отдельный класс с атрибутами и добавляет их в лист вот так:\n\nfinal List transactions = [\n Transaction(id: 't1', title: 'New Shoes', amount: 69.99, dateAdded: ",
{
"type": "link",
"text": "DateTime.now"
},
"()),\n}\nВместо того, чтобы просто создать лист так:\nfinal List
Anton ?? ? ??
Лучше сказать в чем преимущества второго варианта
Nick
в первом случае нормально работает типизация, плюс можно на модели вешать методы-хелперы и прочие удобные штуки, во втором случае ничего этого нет, включая подсказки от IDE
Ernest Stanbekov
понятно, спасибо
Aziz
Здравствуйте. Тут можно найти ментора?
Max
Фолд очень хорош, к примеру, для конвертации коллекции в мапу)
Kirill Zhuharev
Что должно входить в его обязанности?)
Олег Иванов
[
{
"type": "mention",
"text": "@ernestby"
},
", можете поделиться ссылкой на курс?)"
]
???????
[
"Чот немного переусложнил, но в качестве плейграунда покатит)\n\n",
{
"type": "link",
"text": "https://dartpad.dartlang.org/e3710bbb18d5b201a656811e5ef46ad8"
},
""
]
tdesc
У кого последний флаттер под веб завелся?
tdesc
Поделитесь секретным рецептом
???????
Ну в выходные работал
Max
Использовать типизированный язык, применяя для бизнес-сущностей мапы вместо классов? Для этого должен быть отдельный котёл в аду. Но без проверки типов в него будут случайно падать спамеры и маркетологи)
tdesc
У нас чет не запустился сегодня, на сокеты в тулзах ругалсо
???????
Ну могу посмотреть вечером, если напомнишь часа через 2-3, запустится ли у меня
tdesc
Под какую платформу win/mac?
tdesc
Есть подозрение что макака тупит
???????
Не собирается или уже собраное не хочет работать?
tdesc
[
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/41364"
}
]
???????
Банально IDE перезапускать пробывал?
tdesc
Подаван тестил, я вечером попробую тож
tdesc
Да все перегружали переставляли вроде
???????
Ну ок, прост с девтулз, по крайней мерез в вебсторме, есть такая бага, что если попробывать начать отладку не закрыв старый хромчик - порт оказывается занятым и приехали.
???????
Но перезапуск IDE исправляет проблему
Ivan Danyliuk
[
"А есть кто, съевший собаку с пуш-нотификациями и firebase_messaging?\nВ андроиде есть какой-то ",
{
"type": "code",
"text": "onBackgroundHandler"
},
" и я не могу разобраться – это опциональная какая-то штука (а-ля специальный хак для мелких высокоприоритетных действий) или обязательная?\nПотому как если этот хендлер не указать, то на андроиде, при получении пуша, ругается ",
{
"type": "code",
"text": "FlutterFcmService: Fatal failed to find callback"
},
", а если указать, то там пачка других багов, да в этом хендлере мало что можно. Собственно первый вопрос - насколько обязателен этот хендлер для Андроида?"
]
Andrey Zubov
А имеет смысл использовать именно AS а не VS code?
Andrey Zubov
У меня настроены оба, но code побыстрее в работе
Eugene Makei
[
{
"type": "pre",
"text": " return Scaffold(\n appBar: AppBar(\n title: Text(widget.title),\n ),\n body: Container(\n child: FutureBuilder(\n future: DefaultAssetBundle\n .of(context)\n .loadString(isNewContentAvailable ? contentFile.path : 'assets/journal.json'),\n builder: (context, snapshot) {\n // Read json-data\n var listData = json.decode(snapshot.data.toString());\n\n return RefreshIndicator(\n onRefresh: _refreshListView ,\n child: ListView.builder(\n physics: const AlwaysScrollableScrollPhysics(),\n itemBuilder: (BuildContext context, int index) {\n return JournalCard(\n titleText: listData[index]['title'],\n pdfURL: listData[index]['pdfURL'],\n imgURL: listData[index]['imgURL'],\n isAvailable: listData[index]['pdfURL'].toString().isNotEmpty,\n );\n },\n itemCount: listData == null ? 0 : listData.length,\n )\n );\n },\n ),\n ),\n );",
"language": ""
},
"\n\nв этом месте ",
{
"type": "pre",
"text": "\n.loadString(isNewContentAvailable ? contentFile.path : 'assets/journal.json'),",
"language": ""
},
"\n\nкогда есть данные в contentFile, то получаю пустой список. файл точно не путой (открывается через OpenFile)\n\n",
{
"type": "pre",
"text": " DefaultCacheManager().getFileFromCache(widget.contentURL).then(\n (file) {\n if (file != null) {\n contentFile = file.file;\n setState(() {\n isNewContentAvailable = true;\n });\n }\n });",
"language": ""
},
""
]
???????
[
"три апострафа для многострочного моноширного: ",
{
"type": "code",
"text": "```"
},
""
]
Eugene Makei
да, забыл, но это точно не решит проблему
Max
Зато людям удобнее смотреть, лучше вообще куда-нибудь класть код, по типу гиста
???????
А файл точно моментально читается?) Яб предположил бы, что всеже там await нужен Да и энивэй, такие действия в билд выносить - эт надо очень сильно пользователя не любить
Eugene Makei
там же .then()
???????
Там нет моноширного и стена текста
???????
прочитал только 1 строчку, остальное нечитабельно
northelks
[
{
"type": "code",
"text": "getFileFromCache"
},
" пустой файл возвращает?"
]
Eugene Makei
[
"нет, если добавить ",
{
"type": "code",
"text": "OpenFile.open(contentFile.path)"
},
", открывается скачаный из сети файл"
]
northelks
а что не получается тогда?
Eugene Makei
пустой список, как будто файл пустой. если загружается список из регулярного файла той же структуры из 'assets/journal.json', всё нормально работает
northelks
может в кэше уже есть такой кей/id с этим файлом и он отдаёт пустой?
Max
Зависит от того, привычна ли тебе Idea)
Eugene Makei
написал же, что файл если открыть перед изменением состояния, то данные есть.
Yerassyl
[
"как енкодит в формате ",
{
"type": "pre",
"text": "data:image/jpeg;base64,/9j/4SFURдальше_много_много_много_символов",
"language": ""
},
""
]
|