Программирование : Dart & Flutter по-русски
Андрей Козак
да тут только через сервер имхо. Меняй апи - выдавай в ответе не id а alias (который руками нужно будет заполнять или генерить по заголовку статьи например, если у тебя статьи)., в роут пробрасывай алиас, и по алиасу у сервера запрашивай сущностью нужную
Олег Коротин
Я так понимаю, единственное решение, хоть и геморное, это писать отдельно куски кода на Swift/Objective-C и Java/Kotlin для реализации этой задачи?
Дима
Спасибо за помощь, буду разбираться!
Андрей Козак
мне кажется лучше через unity попробывать сначала, потому что через натив совсем уж гемморой
Андрей Козак
или попробывать глянуть как flutter_cube dependence эта штука работает и дописать ее
Dan
[
{
"type": "pre",
"text": "void main() {\n print(\"start\");\n final List _result = ['a','b','c','d','e'];\n for(final each in result){\n if(each == 'a' || each == 'b'){\nprint(each);\n}\n}\n print(\"stop\");\n}",
"language": ""
},
"\nможно так же"
]
Олег Коротин
Окей, спасибо, буду пробовать!
Андрей Козак
или вообще все на unity написать, там были платные модули для построения игровых менюшек, которые похожи на нативные компоненты
Олег Коротин
Это very hard, по-моему
Андрей Козак
я прост хз что ты пишешь, если у тебя все приложение - список, и экран просмотра элемента списка, в котором 3d модель, то наверное проще на unity сделать
Avada Kedavra
Подскажите, как решить проблему There should be exactly one item with [DropdownButton]'s value: Есть стейт класса в нем прописано String _activeCurrency = "USD"; List currencies = [];
Потом в конструкторе я получаю this.$currencies.stream.listen((data) { this.currencies = data; });
И используется DropDownFormField dataSource: this .currencies .map((e) => {"display": e, "value": dictionary[e]}) .toList() Если же инициировать String _activeCurrency = ""; то проблем нет, но мне надо выбранное стартовое значение
4??uzhoy .
ну да, можно, и?:)
Max
"Мы слышали, ты любишь низкоуровневый рендеринг, поэтому мы решили засунуть Unity в твой Skia, чтобы ты мог рендерить низкоуровнево, пока рендеришь низкоуровнево)
Dan
[
"ну если хочешь прям where)\n",
{
"type": "pre",
"text": "void main() {\n print(\"start\");\n final List _result = ['a','b','c','d','e'];\n _result.where((e)=>e=='a'||e=='b').forEach(print);\n print(\"stop\");\n}",
"language": ""
},
""
]
Alexey Z
Запилить на Rive/Flare
roman G ??
[
"подскажите, нормально ли делать такой singleton\n",
{
"type": "pre",
"text": "class MySingl {\n static MySingl _instance;\n static get instance => _instance;\n \n static Future createInstance(){\n _instance = await instanceCreator();//в общем весь вопрос в этой строчке, я хочу проинить 1 раз, чтобы не ждать каждый раз await \n}\n\n}",
"language": ""
},
"\n\nт.е можно ли потом один раз в main классе проинить(MySingl.createInstance()) синглтон и потом обращаться к нему из любой точки приложения как MySingl.instance(т.е без Future, сразу получать доступ к объекту) ?\nт.е один раз подождать await и больше не трогать инициализацию? Или это плохой способ и лучше сделать так: \n",
{
"type": "pre",
"text": "class MySingl {\n static MySingl _instance;\n\n static Future getInstance(){\n _instance ??= await instanceCreator();\n}",
"language": ""
},
"\nно тогда нужно будет каждый раз ждать пока завершится future, чтобы получить доступ к полю, а хотелось бы проинитить 1 раз и иметь доступ к полю без ожидания Future"
]
Sergey Hottabych
[
"А подскажите, как лучше делать запросы через Dio?\nНапрямую ",
{
"type": "code",
"text": "await Dio().get(url);"
},
"\nИли сгенерить для него Api через Retrofit? И обращаться уже как ",
{
"type": "code",
"text": "await client.getTasks()"
},
""
]
Sergey Hottabych
Кто как делает?
Avada Kedavra
подскажите, как можно отдебажить значение приходящее на уровне инициализации? DropDownButton({....}): assert(items == null || ...) как посмотреть на этом уровне этот items?
Sergey Hottabych
Синглтоны зло )) Юзай провайдер.
Temurxon
breakpoint на эту строку
Temurxon
если visual studio code будет легче
admin
как можно сделать такую кнопку если высоты неизвестна?
Temurxon
RawMaterialButton
Temurxon
через Constrained box
Temurxon
значения даёте в интервалах
Avada Kedavra
спасибо, очевидно, но не подумал)
Avada Kedavra
боги придумали дебаг))
admin
даже не знаю сможет ли он для этого подойти, там же нужно указывать высоту
Temurxon
или можно через expanded
Sergey Salnikov
[
"Вот такой штукой пользовались на одном проекте, на другом бекендеры по сути написали именно это но своё =)\n\nно тебе это надо развернуть у себя\n\nосновной транспорт websocket, умеет в бинарные сообщения посредством protоbuf\n\nподписываешься на каналы - получаешь стримы данных \n\nя её не стандартно использую для двустороннего общения (надо сделать publish=true) между клиентами в локалке для proof of concept здесь и сейчас (в докере за минуту развернул и поехали), вместо писанины своего сервера\n\n",
{
"type": "link",
"text": "https://centrifugal.github.io/centrifugo/getting_started/"
},
""
]
Alexander PhatoM
кто-нибудь знает, если для рекламы в admob_flutter в ios версии я использую app id рекламный от android, при включении ограничения трекинга в настройках ios, будет включено ограничение?
Gelo Pak
Hey guys , who know how to make this thing? u tap on the button to take picture from the camera after that the picture which you have just taken will be shown on another page?The main problem there i don't know how to show the picture on another page , there are a large mount of examples how to show it on the same page where u tap on the button to take the picture ????
Sergey Hottabych
Hi. Use a Provider package
Tim
А можно как то в Codemagic задать кастомную версию flutter? Чтобы не последняя использовалась, а та, что задам руками
Ivan
ты можешь выбрать в настройках
Степан Бежук
Всем привет, решил сделать галочку запомнить меня, после этого пошли вот такие ошибки
Степан Бежук
Как это лечить ??
admin
у тебя написано же что там за ошибки
Степан Бежук
Так суть в том что я откатил на робочий комит, а ошибка то осталась
Степан Бежук
Это не критично так как flutter clean и оно работает, но интересно узнать почему ошибка сохранилась на 100% робочем комите с другой ветки
Oleg Pchelkin
Так кэш же при переходе между ветками не будет чиститься у тебя
Степан Бежук
Точно, провтыкал, для студии сделал плагин что бы при переходе сама чистила кеш а для vs code такого не делал
admin
и ещё убери яблоко с никнеймам, это как клеймо)))00
Степан Бежук
)) уже давно должен был убрать, но все время забываю ))
Avada Kedavra
[
"помогите со StreamBuilder\nу него прописан stream\nВ него при старте прилетает нулл (хотя я BehaviorSubject сразу с [] прописываю, но проблема не в этом), потом прилетает пустой массив\nпотом в стрим добавляется массив значений, но здесь он не обновляется\n\n",
{
"type": "pre",
"text": "final _exchangesStream = BehaviorSubject >.seeded([]);\nStreamController> _exchangesController = StreamController();\nStreamSink get updateExchanges => _exchangesController.sink;\nconstructor() {\n _exchangesController.stream.listen(_exchangesUpdateStream);\n this.exchanges.listen((event) { Это для теста - сюда все прилетает\n print(event);\n });\n}\nStream get exchanges => _exchangesStream.stream;\nSink get _updateExchanges => _exchangesStream.sink;\n \nvoid _exchangesUpdateStream(List newExchanges) {\n this._viewExchanges = newExchanges;\n _updateExchanges.add(this._viewExchanges);\n}\n\nStreamBuilder(\n stream: stateProviderBloc.exchanges,\n initialData: [],\n builder: (context, snapshot) {\n print(snapshot.data);\n ...",
"language": ""
},
""
]
Степан Бежук
Дебажить пробовал ?
Avada Kedavra
да, ставил в нем точки останки но туда прилетает только нулл, а потом пустой
Avada Kedavra
а как отследить построчно стрим - непонятно
Avada Kedavra
то есть в стрим точно прилетают данные и для примера в другой слушатель они точно отправляются
Кирилл Матросов
это откуда?
Fortune's Desire
мемопаблик профунктор, но похоже ориг контент
Combot
Total messages: 209347
Dk
Привет. Чё за дела, взял пример из документации, а он не работает?
Roman Vasiliev
ссылку на документацию
DK
я даже боюсь что-то спрашивать
Dk
[
{
"type": "link",
"text": "https://api.dart.dev/stable/2.8.4/dart-io/dart-io-library.html"
}
]
Roman Vasiliev
импорт не записан
Roman Vasiliev
приписал строчку там где у меня импорт есть
Степан Бежук
Народ а как уменьшить размер приложения, четыре вюхи а весит около 120мб
Roman Vasiliev
сначала вообще думал там свою переменную нужно передать
Dk
Что значит "не записан"?
Roman Vasiliev
то и значит
Roman Vasiliev
библиотека не импортирована в файле
Савостьянов Андрей
Debug? Нормально. В релизе меньше будет.
Roman Vasiliev
dart:convert
Степан Бежук
Спасибо я уж на пугался уже, а в среднем сколько в релизе может весит, так как на чистом котлине жал приложения до 15-25мб
Roman Vasiliev
если импортирована, значит проблема в другом
Roman Vasiliev
но не видно, энивей
Roman Vasiliev
подчеркивание не дает достаточной информации об ошибке
Roman Vasiliev
так можно бесконечно помощи искать
Dk
[
{
"type": "code",
"text": "error: The argument type 'Utf8Decoder' can't be assigned to the parameter type 'StreamTransformer '. (argument_type_not_assignable at [pam] lib/main.dart:9)"
}
]
Савостьянов Андрей
Релизный рантайм Флаттер +/- 5МБ к размеру приложения обычно. Т.е. helloWorld будет весить около 6МБ.
Степан Бежук
Ну не плохо так
Roman Vasiliev
Скорее всего с дженериками беда, по наследованию типов вроде все верно
Dk
Может у меня Dart устаревший? Как узнать?
Roman Vasiliev
не, у меня тоже
Roman Vasiliev
я по исходникам прошелся, сам тип его совпадает
Roman Vasiliev
а вот дженерики проверять нужно
Avada Kedavra
это не главная проблема)
Avada Kedavra
проблема в том, что потом данные не прилетают
Dk
А как работать сейчас-то? Есть какой-нибудь способ не через transform?
Avada Kedavra
проверку то я на нулл добавил,хотя и странно,если я стрим объявил как BehaviorSubject >.seeded([]) мне казалось нулла не должно быть
Avada Kedavra
уже 2 часа бьюсь а результата и понимания куда дальше копать нет(
Roman Vasiliev
utf8.decoder.cast () попробуй так, не гарантирую что заработает корректно, но не ругается
Или так utf8.decoder.cast()
Он из-за типа листа ругается
Aleksandr
В общем есть в нативе единственная flutteractivity, как при создании её передать ей имя роута, что бы при старте flutteractivity был переход на нужный роут?
Avada Kedavra
[
"ну есть StreamController и у него ",
{
"type": "pre",
"text": "Stream get exchanges => _exchangesStream.stream;",
"language": ""
},
"\nи вот из этого стрима я и создают стримбилдер"
]
Aleksandr
Кто-нибудь сталкивался с этим?)
Avada Kedavra
в стрим новые данные прилетают, а в подписааный стримбилдер - нет
Aleksandr
Думаю надо сделать натив активити, и из него пушить flutteractivity с нужным роутом?
Савостьянов Андрей
Прямо в Material App(home: /нужный роут/) и передать. Это типа стартовый маршрут приложения
Aleksandr
Надо из натива передать стартовый роут, он всегда разный теоретически.
Nikita Domnitskii
Скинь полный гист, ничо не понятно же
Avada Kedavra
сейчас попробую все лишнее вырезать
Dk
В смысле, это в языке ошибка?
Roman Vasiliev
У Uint8List требуемый List указан в implements, вероятно требуется указание как extends, поэтому и начинает ругаться
а может и плагин криво написан, тоже допустим такой вариант
Савостьянов Андрей
Я у себя через uni_links сделал. Получаю данные из интента, с которым запущено приложение и поднимаю нужный роут в навигаторе.
Avada Kedavra
Вот сам виджет
Avada Kedavra
а вот провайдер
Савостьянов Андрей
Работает сейчас с кликами по уведомлениям и дипЛинкам.
Aleksandr
Спасибо, завтра гляну. Мне тоже из уведомления надо запустится.
Nikita Domnitskii
Ты в курсе что листен тригерится когда стрим эмитит?
Nikita Domnitskii
А эмитит он когда ты данные добавляешь
Nikita Domnitskii
Так что ты бессмыслицу какую-то написал
Avada Kedavra
StateProviderBloc() .updateExchanges .add(this.prepareExchanges(exchangeService.filteredData)); вызывается в сервисе
Игорь
Всем привет, объясните пожалуйста когда ты оброщаешься в Dart через ТОЧКУ например final GlobalKey scaffoldKey = GlobalKey();
scaffoldKey.currentState.showSnackBar(snackBar);
это что вообще за тип ? (просто в JS это объект или метод в прототипе), а здесь что если нет объекта в Dart ?
Nikita Domnitskii
А не, стой
Avada Kedavra
т.е. в другом месте я вызываю add на Provider.sink это же триггер
Nikita Domnitskii
Чот я не заметил
?”*°•??????????•°*”?
Пипл Как получить список папок в корневом каталоге? И в кастомном? path_provider видел пакет есть, но ничерта не понимаю (я нуб) Может, кто-то может мне пример показать?
Avada Kedavra
но я нашел одно подозрительное место в коде таки в обсуждении, спасибо большое за диалог - сейчас попробую извернуться
Dk
может я не туда вписал?
Roman Vasiliev
да нет, туда
Roman Vasiliev
у тебя студия не 4 версии?
Avada Kedavra
ААА, спасибо еще раз, 2 часа насмарку)) иногда помогает просто диалог без помощи)))
Nikita Domnitskii
Уточку заведи резиновую
Avada Kedavra
Да, пора видимо)
Roman Vasiliev
У меня еще 3.6, поэтому плагин дарта различаться может
Nikita Domnitskii
Ну тут не суть с кем
Nikita Domnitskii
Главное с кем-то
Avada Kedavra
Я как раз же пытался оправдываться, что все правильно написано) уточка то не скажет, что я провтыкал)
Dk
Обновил плагин только что, толку нет
Dk
О, добавил импорт typed_data, не ругается
Dk
Правда к сокету подключиться не могу почему-то
Dk
Во, через телефон подсоединяется
Dk
[
{
"type": "mention",
"text": "@Aqluse"
},
" спасибо, конвертирует"
]
Roman Vasiliev
Странные движения, но ок
Dk
Это про каст или про мои действия?
Roman Vasiliev
Про путь к рабочему варианту)
Avada Kedavra
а как расшарить enum между несколькими файлами?
Савостьянов Андрей
Импортировать в нужном файле.
Avada Kedavra
так он вроде не экспортится, или vscode не подсказывает просто
Савостьянов Андрей
import 'enum_file.dart';
Avada Kedavra
а, отдельным файлом, спасибо, как то вроде не особо привычно)
Oleg Pchelkin
Ну можно и не отдельным файлом, просто импортируется файл с енамом внутри. Вместе с ним может быть другой енам, класс или вообще все что угодно
Avada Kedavra
так почему то не хотело, ругалось, что не видит такого определения, хотя тот файл был заимпорчен, может vscode чудила
Савостьянов Андрей
enum публичный? В названии подчеркивания в начале нет ли? Типа enum _MyEnum{}
Avada Kedavra
нет, не было подчеркивания
Игорь
Подскажите как в widget Text сделать красную строку ? Чтобы был отступ на 1 строчке текста.
Oleg Pchelkin
Попробуй '\t' поставить перед текстом
Андрей Козак
подскажите, если я в statelessWidget делаю final CounterBloc counterBloc = context.bloc (), чтобы при нажатии на кнопку вызвать .add(event), это не вызовет проблем?
Андрей Козак
android studio варнинг выдает
Андрей Козак
но вроде криминала нет
Игорь
как сделать такой элемент в flutter ?
Ivan
[
{
"type": "link",
"text": "https://medium.com/@mg55851/flutter-clippers-1fa3666f2bef"
}
]
Ivan
начиная с Custom Clippers
Игорь
[
"спасибо нашел элемент похожий, ",
{
"type": "link",
"text": "https://flutterawesome.com/flutter-custom-clippers-to-help-you-achieve-various-custom-shapes/"
},
""
]
Evgeny Cherkasov
[
"Кто работал с ",
{
"type": "code",
"text": "DataTable"
},
" - можно ли как то сделать ее по ширине родителя и ширину одной из колонок растянутой на все свободное место?"
]
Andrei
всем привет, подскажите, можно ли в vscode настроить поддержку android flutter? Плагины android и kotlin установил, но все равно пишет ошибки
Andrei
android studio кстати тоже не видит flutter классы, хотя плагины устарновлены dart и flutter
Дмитрий
Виджет ушёл в dispose а ты сет Стэйт делаешь
Дмитрий
можешь такое заюзать
Дмитрий
bool mounted = true;
Андрей Козак
в последней версии android studio, был notice что flutter плагин с ней не совместим.
Андрей Козак
если поставил 4.0, ставь версию поменьше
Luka Katsadze
Нашел в чём проблема, спасибо
roman G ??
я чета туплю, но как мне вернуть результат из foreach?
Anton ?? ? ??
почему так много на нативе
Max
Но вообще для этих случаев есть firstWhere, any и every. forEach тут просто не по делу.
Anton ?? ? ??
а как можно сделать эффективнее? просто в такой ситуации, например, если нужный элемент находится первым, а в массиве 100000 элементов, то ваша функция пройдётся по всем элементам
Дмитрий
юзай for и используй break
Anton ?? ? ??
[
"для таких случаев есть firstWhere и сила ФРП, как уже советовали ",
{
"type": "link",
"text": "https://t.me/rudart/209488"
},
""
]
Дмитрий
все верно, firstWhere подойдет лучше всего)
roman G ??
точно Всем спасибо
???????
Как показал на скриншоте вообще делать не стоит.
???????
Старайтесь избегать любых обращение "во вне" при обходе стримов и итеррейбл их методом
???????
Воспринимайте эти вещи как конвеерную линию, в которую не стоит вмешиваться. Можно извлекать только финальный результат.
???????
[
"Тк фактически здесь вы делаете:\n\n",
{
"type": "pre",
"text": "void main() { \n var result;\n final forEach = (List list) {\n for (final int i in list) {\n result = i;\n } \n };\n forEach([1, 2, 3]);\n print(result);\n}\n\n",
"language": ""
},
"Что, естественно, не красиво.\nА еще хуже то, что вы можете захотеть в дальнейшем продолжить цепочку, добавив map, where и прочего и внезапно выстрелить себе в ногу."
]
zzz
Ребят подскажите, есть ли актуальные книги по Dart 2 для новичков?
Савостьянов Андрей
[
"Самая лучшая книга по актуальной версии Dart ",
{
"type": "link",
"text": "https://dart.dev/guides/language/language-tour"
},
""
]
Олжас Сулеймен
еще и обновляется постоянно
zzz
Вот как раз на в первой же строке написано что это в первую очередь для тех кто умеет писать на каком либо другом языке. Сложновато для неумехи.
Савостьянов Андрей
Это для афроамериканцев написано. Там имеется в виду что не объясняется что такое переменная, метод, цикл, класс т.е. самые основы программирования. У нас базы школьной информатики достаточно для Dart tour.
neikist
Круто вам)) Мы в школе на информатике рисовали в тетрадке компьютер, да основы qbasic нам показали, тоже на бумажке. Правда я в 2009 заканчивал, но тем не менее бекграунд у всех разный.
Савостьянов Андрей
Моя доча в третьем классе средней школы ещё в 2013 году вполне себе изучала что такое скоупы видимости пространств имён переменных. Нормальная сейчас программа в школьной информатике.
neikist
А вы из города или деревни? В нашей деревне конечно сейчас тоже получше вроде, но сомневаюсь что такие темы объясняют.
neikist
Через vpn пробовали?
Yerassyl Maikhanov
Как сделать виджет на главном меню?
Temurxon
к самому серверу не подключаеся
Савостьянов Андрей
Ошибка секьюрности присоединении с сервером. Почему? Нужно смотреть что с коннектом на конкретном компьютере. Что ты от нас хочешь?
Савостьянов Андрей
[
"С сервером ",
{
"type": "link",
"text": "pub.dartlang.org"
},
""
]
Савостьянов Андрей
Это тема из стандартной рабочей тетради по информатике. Может учитель объяснить не может, а по программе основы информатики сейчас в начальной школе проходят. В любой школе РФ.
Yerassyl Maikhanov
[
{
"type": "link",
"text": "https://medium.com/flutter/announcing-flutter-1-17-4182d8af7f8e"
}
]
|