Программирование : Dart & Flutter по-русски
l
А что мешает просто сделать сервис, от которого уже обновлять провайдеры?
Petr
А есть примерчик какой нить в инете? Слабо пока это представляю
hans linger
там синглтоном точно не обойтись?)
Andrey P
все выглядит как то ... - в общем смотри у тебя есть QuizModel - в ней есть List - и есть List - не знаю в каждом quiz или нет - но ты должен хранить всю эту модель вверху и ответы тоже - Т/е сейчас ты мешаешь иерархию модели и UI - надо их разделить
Andrey P
в последней картинке я не понял - зачем ты в ответах конкретный quiz - получаешь?
Andrey P
ответы же привязаны к quiz? со-но чтобы их получить ты должен конкретный quiz выбрать - или я чет не понимаю
Petr
ПОтоммучто в квизах хранятся ответы. Вот модель
Andrey P
[
"вот именно - когда ты их отображаешь где то - ты уже получаешь q = QM.quizes[i]; a = q.answers; и со-но ",
{
"type": "link",
"text": "ListView.build"
},
"( count:a.length; item: ListItem... onTap: () { q.......} )"
]
Petr
Это да. Я так делал)
Petr
Но зачем мне туда целый quiz передавать, если я хочу передать только его ответы
Andrey P
а ты его и так и так передаешь - потому как тебе надо изнутри получить ссылку - что ты и пытаешься сделать - либо тебе нужны id - непонятно какую задачу ты хочешь решишь? менять поведение через провайдеры ?
Petr
Я бы хотел как-то всё упростить, зачем мне в виджете Ответов передавать саму модель Quiz Это выглядит как-то красивее что-ли...
Andrey P
а куда ты хочешь передавать результат? - тогда тебе нужна в модели (или куда ты в итоге складываешь результат) - функция получения результата и туда тебе надо передать и сам ответ и вопрос - но вопрос тебе нужно все равно иметь - т/к ответы к нему привязаны и в любом случае ты его откуда то будет получать. Поэтому красивее это или нет? Большой вопрос - выглядит как оверхед. Ты сам же хочешь откуда то его взять - но передать не хочешь? :) т/е красота твоя вся разрушится...
Andrey P
тянуть его через глобальный провайдер - это усложняет + провайдеры, когда ты интерфейсом разделяешь вещи для того чтобы убрать связанность - а тут ты явно связанные вещи пытаешься разделить.. зачем?
Petr
Хорошо. Убедили. Спасибо за помощь)
Angry TaigaFox
Привет, использую SearchDelegate и пытаюсь изменить цвет вводимого текста, но что то не получается. Может кто сталкивался?
l
Оно вроде берет стиль из контекста но как-то криво Я видел в коде самого showSearch где-то, точнее не подскажу
Fearless Cry
если прям горит по времени, можно сделать и так
Fearless Cry
но лучше через стейт ??
Dima
Ещё же вернуться в предыдущее место выполнения - а для этого передавать прошлый эветн и точку остановки в состояние а затем возвращаться - слишком сложно и потом в коде никто не разберётся
Fearless Cry
зачем? Ты же знаешь где остановился
Fearless Cry
кидаешь какой-нибудь RetryEvent
Dima
Функций использующих апи много - поэтому получится передавать место остановки..
Fearless Cry
ну это проблема конкретно твоей архитектуры
Dima
апи они часто больше чем с одной функцией )
Fearless Cry
Если у вас протух токен - дропнется первый же запрос
Fearless Cry
что там запоминать?
Dima
даже если ловить исключение - всё равно спрашивать пользователя и возвращать в пред. точку после новой авторизации и это только один из сценариев с диалогом
Fearless Cry
в чём проблема вернуть в предыдущую точку если она постоянная?
Dima
в блоке же не одно место обращения к апи
Dima
если бы использовал апи только при одном евенте блока - тогда конечно да
Dima
хотя можно подумать как отправить состояние и в этой точке ждать RetryEvent..
Fearless Cry
можно сделать несколько евентов
Dima
слишком запутанно будет, итак глобальный блок огромный а вот остановить блок в ожидании - сейчас подумаю если получится
Fearless Cry
остановить блок в ождиании не получится
Fearless Cry
каждый диспатч запускает новый метод mapEventToState
Fearless Cry
можете остановить блок только в рамках одного вызова этого метода
Fearless Cry
то есть между yield’ами внутри
Fearless Cry
единственный варинант - Completer
Fearless Cry
правда как вы его примените непонятно
Dima
[
"типа \nyield RetryState();\nawait _events.firstWhere((e) => e is RetryEvent);\n",
{
"type": "link",
"text": "api.call"
},
"();\nно уже не библиотечный блок"
]
Fearless Cry
можно и библиотечным
Fearless Cry
await firstWhere
Fearless Cry
блок унаследован от стрима
Dima
Точно, попробую так, благодарю за помощь
Fearless Cry
он правда стейт ждёт
Fearless Cry
хз прокатит не прокатит
Dima
Завтра попробую, блок может из за asyncExpand совсем остановиться
Fearless Cry
не остановится думаю
Fearless Cry
а может и остановится ??
Fearless Cry
да, поток реально паузится
admin
emulator: ERROR: Running multiple emulators with the same AVD is an experimental feature. Please use -read-only flag to enable this feature.
admin
выйдал такой ощибку
Семён undefined
можно ли во флаттере сделать пипетку? чтобы определять по цвету заднего фона необходимый цвет текста, тёмный или светлый
Вадим
ThemeData.estimateBrightnessForColor(color)
Семён undefined
фон — это картинка
DVS (Read The F.ng Manual) Studio (NoHello)
Преобразовать виджет в картинку, перевести в массив пикселей, ..., profit
Alex
[
{
"type": "code",
"text": "SizedBox(\n width: 56,\n height: 56,\n child: Material(\n color: Colors.transparent,\n child: InkWell(\n onTap: () {\n print('click');\n },\n child: SvgPicture.asset(\n 'assets/images/pause_button_icon.svg',\n ),\n ),\n ),\n )"
}
]
Alex
Привет, используя код выше я получаю ripple effect под изображением, как это можно исправить не используя Stack?
Nikita Domnitskii
Ink.image
Jeka Goroshkin
[
"кто-нибудь знает, почему ",
{
"type": "code",
"text": "typedef"
},
" только для функций?\nхотелось бы и другие типы дефайнить, вроде\n",
{
"type": "code",
"text": "typedef JsonObject = Map "
},
""
]
IB Akhrorov
как можно создать такой виджет
Ivan
[
"через textpainter я делал, у него есть свойство ",
{
"type": "link",
"text": "https://api.flutter.dev/flutter/painting/TextPainter/didExceedMaxLines.html"
},
""
]
Ivan
если нужен пример, то пиши
IB Akhrorov
Можете показать свой пример
Ivan
[
{
"type": "link",
"text": "https://pastebin.com/Va3jC4ia"
},
" ",
{
"type": "mention",
"text": "@Islam_akhrarov"
}
]
IB Akhrorov
Большое спасибо
Наиль Гилазиев
[
"Всем привет!\nК празднику хочу приурочить подарок для сообщества!\n\nДля рабочего проекта, где форматом общения клиента с сервером был выбран бинарный формат MessagPack пришлось писать для dart/flutter свою реализацию. Имеющиеся библиотеки не имели Streaming API для сериализации десериализации данных. \nРабота проделана, данные сериализуются / десериализуются. \n\nРешил не полениться и оформить код в библиотечку, для сообщества, кто решится переходить на бинарные форматы передачи данных. \nps Замечания и предложения приветствуются в issue or PR на github\n\nС праздником!\n",
{
"type": "link",
"text": "https://pub.dev/packages/messagepack"
},
""
]
Aleksey
[
"а этот что? не работает? ",
{
"type": "link",
"text": "https://github.com/knopp/msgpack_dart"
},
""
]
Наиль Гилазиев
этой библиотекой вдохновлялся. Работает. Но нет streaming API для упаковки распаковки данных. Это была лучшая библиотека из нескольких, что пришлось расковырять
(;?_?) Ivan Zhuravlev ???>?
Имеющиеся библиотеки не имели Streaming API для сериализации десериализации данных.
(;?_?) Ivan Zhuravlev ???>?
Ну неужели сложно читать НЕ по диагонали
Наиль Гилазиев
Остальные библиотеки абсолютно не актуальны, заброшены, и не работали в некоторых достаточно простых кейсах сериализации /десериализации данных. то есть на вход подаешь мапу - и библиотека сериализует. ну и обратно соответственно тоже получаешь мапу. И performance в сравнении с реализацией knopp уступал сильно на тестах. Ну а самое главное не было возможности потоково работать с данными.
Семён undefined
такой же сегодня вопрос возник
Олжас Сулеймен
в пути, обещают
Hellomik
Как узнать текущее положение listview ? Типо по индексу если не знаешь длину дочерных элементов
Hellomik
Есть кнч scroll direction но он не подойдёт для этого случая, потому что не знаем длину дочерных элементов
Yerassyl
Народ, когда открываю страницу вместе с текущим запросом и выполняется предыдущие запросы заново. Как этого избежать, просто так запросы отправляет
Dmytro Bondarchuk
В билд функции делаешь запросы?
Yerassyl
Ну future builder
Dima
похоже придётся отдельный PublishSubject добавлять..
Dima
хотя RetryEvent приходит в PublishSubject блока - firstWhere зависает в ожидании
Dima
ps. если поменяем transformEvents > asyncExpand на switchMap - потеряем часть событий что не хотелось бы
Alexander PhatoM
Всем привет, может кто подсказать как сделать выбор фото как в телеграмме с моментальной загрузкой без перехода в галерею или в камеру?
Roman Diachenko
Нужно всего навсего получить доступ к файловой системе. А дальше о рисуй что и как хочешь)
Alexander PhatoM
Это сработает и для получения картинки с камеры?
Roman Diachenko
Для таких целей нужено написать плагин для доступа к камере, что требует знания хотя бы одной нативной платформы
Roman Diachenko
Как андроид разработчик могу предложить смотреть в строку Camera X
Sergey Lavinov
В Dart реально вообще писать расширения со статическими методами? Если добавить в расширение такой метод, он никак не реагирует, типа ок всё, но если попытаться этот метод вызвать - возникает недопонимание (ошибка компиляции)
Karen
Нормально все со статическими методами
Семён undefined
хз, у меня всё норм
Sergey Lavinov
Extension в том же файле, дело не в видимости
Олжас Сулеймен
Разве так должно работать? Статики только у тех классов у которых они определены данном случае сам экстеншн
Олжас Сулеймен
TextExtension.workPls()
Sergey Lavinov
Точно, так работает
Sergey Lavinov
Спасибо большое
Egor Malyutin
А как можно сделать textfield для любых чисел (с точкой и с - в том числе)?
Pavel Pimenov
[
{
"type": "link",
"text": "https://pub.dev/packages/flutter_masked_text"
}
]
Никита Моисеев
есть че по дебагу на айосе с винды?
Evgeny Cherkasov
Там же кнопка вроде есть в каждом канале для перевода в следущий
Арчи
Хай, подскажите пожалуйста, как мне изменить виджет, если его какие-то из его параметров не изменяются? Вариант создания своего кастомного виджета через копи/паст и хардкодное изменение его параметров не катит. Есть какой лаконичный способ?
petyappetrov
сделать пуллреквест и ждать ответа от автора виджета
Boris Goryachev
[
{
"type": "link",
"text": "https://dart.dev/guides/language/extension-methods"
}
]
Boris Goryachev
а не, кажется это не подходит
Boris Goryachev
Кто-то заводил успешно fcm + ios? Оно не хочет показывать мне нотификейшен в система и не ясно как такое дебажится
Boris Goryachev
сообщеньки при это ловятся в коллбеке внутри дарта, но вот система не хочет ничего показывать
Boris Goryachev
да просто бахаю через ui firebase
Boris Goryachev
все штатно по доке - .configure( onMessage ... )
Boris Goryachev
но это работает типа - когда приложение живое
Igor
я с iOS давно не работал, очень, могло поменятся, но раньше чтобы пуши дебажить нужно было подписывать апу прод. сертификатом
Boris Goryachev
но я так думаю что это потому что оно само что-то там фетчит мимо эппла
Igor
и заливать на девайс
Boris Goryachev
да все на девайсе собираю
Boris Goryachev
командная типа
Boris Goryachev
ну типа подписано сертом команды, но билд не прод-прод
Boris Goryachev
ну и APNS типа через Auth key подключен (не через серты)
Boris Goryachev
в firebase типа
Boris Goryachev
похоже это все поломано
Boris Goryachev
[
{
"type": "link",
"text": "https://github.com/FirebaseExtended/flutterfire/issues/1455"
}
]
(;?_?) Ivan Zhuravlev ???>?
да, локал нотифики + пуш нотифики в яос не работают
(;?_?) Ivan Zhuravlev ???>?
что-то там перекрывает друг друга
Boris Goryachev
там они в один делегейт прутся
Boris Goryachev
но у меня нет локалов
(;?_?) Ivan Zhuravlev ???>?
если убрать flutter_local_notification то все ок работает
Boris Goryachev
всмысле они мне не нужны строго говоря
Boris Goryachev
вот чет у меня не очнь)
(;?_?) Ivan Zhuravlev ???>?
у меня есть проект с firebase_messaging и все работает ???>? пуши приходят
Boris Goryachev
когда апп мертвый?
(;?_?) Ivan Zhuravlev ???>?
и с flutter_local_notifications + firebase_messaging багом я сталкивался
(;?_?) Ivan Zhuravlev ???>?
???>????>?
Boris Goryachev
а все по доке?
Boris Goryachev
вот это вот
Boris Goryachev
[
"if ",
{
"type": "hashtag",
"text": "#available"
},
"(iOS 10.0, *) {\n UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate\n }"
]
Boris Goryachev
в AppDelegrate?
(;?_?) Ivan Zhuravlev ???>?
нет, ето не пихал. у нас не было каких-то определенных условий "поддерживай все варианты айос с 9 версии" ???>? а проверки в основном на последних типа xr, xs и всей хурмы
Boris Goryachev
ну то есть вообще нативного ничего не делалось - все из коробочки просто заработало?
Dart Flutter
[
{
"type": "link",
"text": "https://skill-branch.ru/flutter?utm_source=yandex&utm_medium=cpc&utm_campaign=Flutter-Differents-RSY-RF&utm_content=8695740395&utm_term=dart%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0&yclid=801633003346886142"
}
]
Dart Flutter
кто купил уже?
XbIK
если с английским нормально на udemy можно не хуже найти, за сумму на порядок меньше
Alexey
Офигеть, там 30к ценник!
Alexey
Вот уж точно на порядок на юдеми
Alexey
А ещё лучше набраться туториалов и в бой. Ебсплатно
Evgenii Elchev
Там на новичков рассчитано
Evgenii Elchev
Пора создавать свой факультет по flutter)))
Кирилл
Ребят, привет. Как вот такие уведомляем делаются? Это пуш или ин Эпп нотификация? У меня в приложениях некоторых уведомления выскакивают каждый день в определенное время, как я сам задал, например в 8 утра, но догнать не могу, это пуш или ин Эпп и как можно это реализовать в флаттер?
Alexey
Вот что-то, а флаттер на старте гораздо проще андроида и тем более айоса. Несколько кликов и уже готовый проект с парой виджетов
Alexey
на скриншоте это уведомление (nofication). может быть создано как локально, так и с помощью push-уведомления. На флаттере можно соответственно использовать библиотеки flutter_local_notifications (локальные) или firebase_messaging (push)
Evgenii Elchev
Эм. Но ios проект создаётся в один клик) и для старта достаточно скачать Xcode из официального магазина)
Alexey
только чтобы добавить кнопку и связать ее с viewcontroller надо все жопные волосы ободрать чтобы понять, как в кривом xcode это делается
Кирилл
Ага... Спасибо большое за ответ и названия библиотек!
Evgenii Elchev
Эм. Там в стартовом проекте сторибоард, выбираешь на панельке кнопку, перетаскиваешь куда надо, зажимаешь контрол тянешь в контроллер. Все готово)
Evgenii Elchev
Чем проще флаттер на старте, так это докой.
Dmitry Zakharov
[
{
"type": "mention",
"text": "@jewpacabra"
},
" hola amigo, peer meetup link plz????"
]
Александр Шода
Все ж изи)
Alexey
я после jetbrains банально запутался в xcode и совсем не понимал, где вызвать чертову палитру компонентов а потом что надо где-то что-то зажать и тянуть
Alexey
только не говорите, что это просто. значит, вы не использовали нормальных IDE и нормальных подходов!)
Alexey
ах да, еще же есть констреинты в верстке... там как в самолете - 100500 кнопок и переключателей. айосники могут сразу в пилоты идти.
Evgenii Elchev
Хз, я концепция тащи мышкой кнопку, тяни метод. Она как бы старая. Делфи, с#, netbins. Да и панелька свойств выбранного объекта. Как ее можно не понять. Просто в столбик кучу свойств с говорящими именами типо text, background. Я не знаю как это может быть сложнее чем куча странных виджетов)
(;?_?) Ivan Zhuravlev ???>?
Имей в виду - вместе они глючат
(;?_?) Ivan Zhuravlev ???>?
Ня яблоке
Evgenii Elchev
Пиратство не повод для гордости)
Кирилл
Получается надо выбрать либо локальные нотификации или пуш???
neikist
Тысяч за 7-8, имхо, было бы норм для вкатывания во флаттер. Качество у чуваков неплохое. Но 30к это писец какой то.
Дмитрий Щербаков
У шварцмюллера курс стоит щас 1к, там для вкатывающихся прям ваще норм все расжевано
Дмитрий Щербаков
На юдеми
neikist
Там фишка у них не в материале, а в автотестах на беке по заданиям, поддержке менторов и собирании коммьюнити. На юдеми со всем этим тухло.
Дмитрий Щербаков
Ну автотесты и ci/cd практически везде один ))
neikist
Хотя и в материале тоже. По андроиду вполне неплохо у чуваков разжевано с некоторыми бест практисами, чего часто не хватает почему то в начальных курсах.
Дмитрий Щербаков
Автотесты на бэке что это?
(;?_?) Ivan Zhuravlev ???>?
Ну... Пока что да.... Фикса не видно
Кирилл
Печалька... Спасибо, что предупредил))
neikist
Ну как, есть после каждого занятия набор задач которые нужно решить, запушить, а потом прогоняется проверка на беке правильно ли сделано.
Дмитрий Щербаков
Тогда я не так понял, думал ты имел ввиду автотесты которые тестят твое приложение) автодеплой и все вот эти вещи
Дмитрий Щербаков
Я не говорю что у них плохие курсы , но имхо для замкадья цена высока)
neikist
А с тем что цена высока я и не спорю. Как я и сказал, зная качество их курсов я бы за 7-8 взял бы скорее всего. Ну с натяжкой 10. Но никак не 30.
Evgenii Elchev
Обычно курсы и идут по 10к за 16 часов
neikist
Ну, тогда пусть ищут других дурачков))
Дмитрий Щербаков
Ну там 2ч теории 12 практики, практика типа тоже платная?)) Ты же сам будешь сидеть кодить/думать/гуглить/so шерстить ))
Evgenii Elchev
Я про этот курс хз, даже не понимаю что значит 12 часов практики)
neikist
О_о Чет очень странно. Я конечно не сильно вникал, но программу видел и числа там заметно побольше были
Дмитрий Щербаков
Не на весь курс, по модулям
Evgenii Elchev
Я на гб полностью программу годовую, обучению ios разрабатывал. Приблизительно знаю как это все работает) но у нас там 16 часов лекций. На домашки время никто не считал, так как разные люди по разному делают. Я курсовой проект сам собирал за 4 часа, у учеников на него сильно больше уходило. Они только над первой из 16 частей больше сидели
neikist
А, на каждое занятие. Вкурил
Дмитрий Щербаков
Ну если там сложить все теории как раз в районе 20часов выходит
Дмитрий Щербаков
У Шварца 56 )))
Дмитрий Щербаков
Короче нужен чел который купит и даст фидбек)
neikist
Я кстати сейчас полистал - все же не, за 8-10 точно бы не взял, но вот за 6-7 подумал бы. Относительно недорого а материал неплохой и практикой подкрепленный. Пусть у них конечно прям совсем азы.
Дмитрий Щербаков
Все равно ни на одних курсах ты не получишь прям супер уникальных знаний, которые сделают из тебя сеньора и даже мидла, все познается в продакшене ??
|