Программирование : Dart & Flutter по-русски
Семён undefined
ни у кого такой проблемы не было?
Семён undefined
я сейчас охерел, переустанавливал винду, а ошибка осталась
Семён undefined
может бету какую нибудь поставить, но это прям слишком странное поведение
Serafim Bakharev
Какое флаттер-приложение не скачаю на iOS, везде микро-баги. То скролл дергается, то анимация дёрганная, то ещё что-то. Почему так? Есть примеры хорошо оптимизированных / с классным UX приложений?
MiT
Там же написано, не разрешение на чтение/изменения фалов/папок проекта или sdk
Роман Аблаев
чот не могу найти в текстовом поле в какое свойство его прописать
MiT
Да flutter говно потому что, скоро на кладбище гугла пойдет
d
[
{
"type": "link",
"text": "https://apps.apple.com/us/app/reflectly-journal-ai-diary/id1241229134"
}
]
Serafim Bakharev
Это единственное :) А что-то ещё?
d
[
{
"type": "link",
"text": "https://www.press.bmwgroup.com/global/article/detail/T0328610EN/the-my-bmw-app-new-features-and-tech-insights-for-march-2021"
}
]
d
[
{
"type": "link",
"text": "https://flutter.dev/showcase"
}
]
MiT
Это должно хвать, чтобы понять что все зависит от разработчика и как он управляет виджетами. У нас тут голый канвас...
Роман Аблаев
Никак не могу понять, ты это прикалываешься или действительно считаешь гумном?
MiT
Прикалываюсь над такими людьми. Как-то странно заходить в сообщество по какой либо технологии и спрашивать: "а эта технология говно или нет?"
Vladimir Brejcha
качество проработки виджетов и анимаций местами хромает, относительно нативных ios, вот и получается что если не заморачиваться сильно с тонкой настройкой и кастомом - ощущается как микро-баги
Vitaliy Snitko
Подскажите, как можно обновить состояние кнопки в StatelessWidget виджете? Очень не хочется из-за необходимости делать её активной/неактивной всю страницу переделывать на StatefulWidget + перерисовывать при каждом чихе..
Kaidjo
что за плагин или расширение?
Nazar????
в vs code по умолчанию так
Evgenii Elchev
как не делай обновлять все равно прийдется) без обновления не возможна перерисовка принципиально)
Evgenii Elchev
внеси кнопку в отдельный виджет
Evgenii Elchev
или используй какой нибудь Builder из пакета провайдер
Vitaliy Snitko
Мне вот подсказали вариант - сделать кнопку отдельным StatefulWidget виджетом... И обновлять её изнутри. )
Evgenii Elchev
так я так и сказал)
Vitaliy Snitko
Ага ) Увидел )
Семён undefined
[
{
"type": "link",
"text": "https://dartcode.org/releases/v3-1/#preview-flutter-ui-guides"
}
]
Mirshod
Добрый день. Как реализовать PageView среди других widgetи? Пробовал Expanded, Flexible но даёт ошибку. Не смогу поставить height. Потому что не хочу фиксировать висоту PageView.
Роман Аблаев
Можно сделать так Container->Expanded->PageView
Роман Аблаев
Если нужна высота. выставляй ее в контейнере
Mirshod
Нет, не хочу поставить высота. Нужно стоять без высота.
Роман Аблаев
Не ставь высоту, тоже сработает
Gurban
Добрый день, делаю проект на flutter, как лучше всего хранить авторизацию токены или Google firebase или например sharedPrefences или что то в этом роде и как реализовать рекомендованный вами метод ссылки на обучающий материал, или по пунктам распинать что бы было понятно с чего начинать и какую технологию изучать, желательно что бы безопасность пользователей учитывалась, кстати бекенд тоже я новичек и если можно и по нему наставить
d
У пакета Firebase auth и так под капотом персистируется состояние авторизации
d
[
{
"type": "link",
"text": "https://firebase.flutter.dev/docs/auth/usage/#persisting-authentication-state"
}
]
Пашка
да камон, кому надо тот и так достанет этот токен
Ivan Danyliuk
Друзья, а есть ли кто-то, кто может помочь разобраться с Gradle? Есть проект на флаттере, в котором используется плагин, который использует нативную либу. При билде плагина – всё ок. При билде проекта – градл ругается, что плагин не видит либу. Перепробовал уже всё, месяц воюю с проблемой ??
Gurban
Получается лучше firebase?
Gurban
[
{
"type": "link",
"text": "https://pub.dev/packages/flutter_secure_storage"
},
"\nА как такой вариант?"
]
Пашка
да не, я про то что хранить токен на локалке все равно придётся, и шифрование чуть чуть обезопасит тебя, но лучше все же не пренебрегать этим
Igor Ganusovskij
Добрый вечер. Не отображается AssetImage в Drawer. Делаю так:
Igor Ganusovskij
В проекте вот так
Igor Ganusovskij
В pubspec вот так
Igor Ganusovskij
И не отображается зараза. Что не так делаю?
Evgenii Elchev
отступ лишний
Evgenii Elchev
ну и ошибку посмотри там в консоле будет
Gurban
А как на счёт потверждения смс кода по номеру кто нибудь сталкивался? И какой сервис отправки кода на номер использует?
Igor Ganusovskij
Спасибо! Из-за такой фигни убил час ?? Отступ убрал и все заработало.
admin
Народ подскажите пожалуйста, как правильно сделать такую avatar button. Логика какая, нажимаем на кнопку выскакивает dialog и предлагает нам выбрать фото сделать или выбрать с галереи. И потом сделали фото или выбрали и чтобы мы смогли сделать редактирования фото как у Инстаграм или телеграмм и потом мы сохраняем и у нас есть аватарка. Но вопрос в том что я не понимаю как сделать правильно наложения на кнопку или как-то по-другому реализовать. Гуглил но не нашёл ??. Подскажите пожалуйста.
Vladislav Rudenua
Вот я такую делал
Vladislav Rudenua
[
{
"type": "mention",
"text": "@PauloItaliano"
}
]
Vladislav Rudenua
Пойдет?
admin
Я думаю что её можно заменить
Vladislav Rudenua
Объясню суть нагуглишь сам, или если подождешь могу скинуть код завтра (там правда костылей много потому что я криворукий)
admin
Огонь ??. Можно код посмотреть? Пожалуйста
Vladislav Rudenua
Объясню суть нагуглишь сам, или если подождешь могу скинуть код завтра (там правда костылей много потому что я криворукий)
Vladislav Rudenua
Огонь ??. Можно код посмотреть? Пожалуйста
Vladislav Rudenua
Нужно два плагина image picker и плагин для кропа картинки.
Maxim Shevtsov
Всем привет, подскажите пожалуйста, как решить сий казус?) Спасибо.
d
поменять тип StreamBuilder ну и судя по всему FutureBuilder также не нужен
Mikhail Kokoulin
[
"Всем привет! Может кто знает почему валится на iphone с webview ",
{
"type": "bold",
"text": "flutter: Error Domain=WKErrorDomain Code=2 \"(null)\""
},
". Может гуглю не так, особо ничего полезного не нашел ??"
]
Ivan Nazarov
Привет. Может кто знает как к textformfield прилепить что-то типа меню с подсказками при вводе? Так чтобы оно не подвигало весь интерфейс (например кастом решение с контейнером и списком внутри)
Ivan Nazarov
Типа отрисовать как на отдельном слое интерфейса. Хз как объяснить
Maxim Shevtsov
у меня stream: метод блока принимает Stream > .Не могу поменять так
Ivan ??
Всем привет! Мы с другом пишем приложение, и столкнулись с проблемой, что у нас нет единого стиля написания кода. Так как я пришел из фронтенда сразу подумал найти какой-то аналог ESLint. Можете посоветовать какие-то инструменты для этого? И так же какие популярные стандарты есть?
d
со слов не очень понятно, можете если хотите скинуть код
d
lint более строгий, я бы посоветовал его
Ivan ??
[
"Он же?\n",
{
"type": "link",
"text": "https://pub.dev/packages/lint"
},
""
]
Ivan ??
А есть какие-то бест парктис, какие рулы устанавливать?
Maksim Zdanchuk
чем заменилось такое объявление?
Maksim Zdanchuk
привет всем)
d
это уже ситуативно, думаю у него из коробки набор правил, которые +- являются рекоммендациями effective dart
Ivan ??
Отлично! Спасибо большое за совет!
Aragroth
Подскажите, а сколько по времени должен выполняться этап сборки gradle, при flutter run на реальное android устройство? Просто решил познакомится с flutter и не понимаю: это так должно долго собираться или у меня пк не вывозит.
Maksim Zdanchuk
спасибо )
Maksim Zdanchuk
окей, спасибо
d
но второй вариант - если в левой части тип указан
Maksim Zdanchuk
ну да, понятно
Maksim Zdanchuk
еще вопрос, а норм, что пустой список = null, а не просто []
Maksim Zdanchuk
еще 3 дня назад работал код (проверка list.length == 0), обновил флаттер и теперь список = null
Maksim Zdanchuk
это мб из-за асинхронности?
Пашка
final List catalogList = const [];
Maksim Zdanchuk
если закоментить присвоение, то вот
Maksim Zdanchuk
выходит, из-за асинхронности что-то не так?
Пашка
получается обнуляет для присвоение
Maksim Zdanchuk
странно, что до обновления флаттера такого не было
Пашка
только какой смысл от этого действия почему сразу не написал final catalogList = await …;
Пашка
зачем проверять length == 0 почему не catalogList.isEmpty?
Maksim Zdanchuk
если с final потом можно использовать list.add
Maksim Zdanchuk
то можно и так
Maksim Zdanchuk
ибо я после в него добавляю элементы
Maksim Zdanchuk
тогда без проблем
Maksim Zdanchuk
есть разница?
Maksim Zdanchuk
привычка давняя
Пашка
нету более читаемо просто)
Пашка
ну это сугубо личное мнение
Ivan ??
А есть что-то типа auto-fix problems?
Пашка
найди который от dynamic руки бьет
Пашка
это точно нужный рул
Ivan ??
А lint уже ударил по ним. Я подключил его
Maxim Shevtsov
Спасибо за помощь. Указал snapshot’у явный тип и заработало) лул
Maksim Zdanchuk
есть идеи, почему вдруг стал null после присвоения?
Maksim Zdanchuk
[
"если что, то вот переменная из sharedPref \n",
{
"type": "code",
"text": "final catalog =\n SharedPreferencesStringListElement(_KEY_CATALOG);"
},
""
]
Maksim Zdanchuk
т.е. тоже Стринг Лист
Семён undefined
еще dart fix -apply херакни
Ivan ??
Ну 100 проблемных мнест это вроде минусануло
Ivan ??
[
"На самом деле еще и добавило. Во многих местах ",
{
"type": "code",
"text": ","
},
" добавило"
]
Ivan ??
А нет вроде все окей. Сорри я тут туплю, тк flutter для меня что-то новое
Sergey Riabinin
Ребят, а можно как-то сделать слайдер (или карусель), чтоб он был не бесконечный, а начинался на 1й картинке и заканчивался на последней?
horse horssyyy
Кто знает что мешает использовать sqlite напрямую из дарта без дергания нативных функций?
horse horssyyy
Ну к примеру вот чтобы работать с базой из изолята
horse horssyyy
Ну и наверное это быстрее всё-таки чем каналы эти
Sergey Riabinin
Не, не он. Но спасибо, не знал про его существование. Я хочу, чтобы перелистывание началось с первого виджета (картинки, страницы) и закончилось на последнем.
Sergey Riabinin
[
"Что-то вроде такого, только не бесконечное.\n",
{
"type": "link",
"text": "https://www.youtube.com/watch?v=ARkO-6f9ZCo"
},
""
]
Sergey Riabinin
Ну и соответственно, чтобы не было видно того, куда нельзя перелистнуть. Ну то есть если у нас 10 страниц, то я хочу чтобы находясь на первой, я не видел 10ю страницу слева. А когда долистал до последней, то не видел 1ю страницу справа.
Max Gorin
Всем привет Подскажите, пожалуйста, как называется элемент, часть которого показан поверх основного экрана и выезжает, если его потянуть? Вот пример из Яндекс го
Алексей Александрович
Что это за пакетик такой? Скиньте название, плиз ??
Stan
Всем привет! Нужно ли диспозить все контроллеры или только какие-то определенные? Нужно ли диспозить скроллконтроллеры и табконтроллеры? Буду благодарен за направление в сторону мануала, не смог ничего на гуглить
Comrade77
Так а в чем проблема вызвать диспоз всех контроллеров в диспоз методе виджета?
Stan
не проблема, хочу узнать надо ли диспозить все контроллеры или только определенные
Comrade77
У меня линтер сам говорит что надо диспозить, я не заморачиваюсь. Если тебе прям точно надо, копай в исходниках контроллеров
Stan
мне бы бестпрактис, в моем случае линтер молчит
Tolegen Akilbekov
Нужно. Они могут остаться в памяти, хотя скрин уже давно попнулся. И не дай бог, ты случайно вызовешь контроллер из скрина, который попнулся
Anonymous
How top open phone settings page without any lib? If there is a lib then will it work for both ios and android
Daniil Kostin
[
{
"type": "link",
"text": "https://pub.dev/packages/app_settings"
}
]
Eldar
РЕбя если я на Странице StatefulWidget передаю массив сотрудников в Reordarable List StatefulWidget на этой же странице, то при смене порядка Reordarable List (через setState), то порядок также меняется и в массиве на самой странице? короче гоовря - это референс тайп передача или value тайп ?
Andrei Abramenko
По ссылке
Eldar
Это найс четко бро !
Egor Sigolaev
Ребят, а как работает dynamic тип? Он определяется на этапе компиляции или в рантайме?
Hateful
как получить значение ключа в map по значению этого ключа?
MiT
dynamic - это когда ты говоришь CFE дарта - я тупой и хз что тут за тип, но и ты не заморачивайся. Можешь вызвать любой метод, покс, что возможны ошибки в рантайме. (c) PlugFox
Egor Sigolaev
То есть всё таки прила может упасть, если динамик тип соответствует типу с которыс проводят операции?
Egor Sigolaev
Точнее не соответствует
Egor Sigolaev
Печаль, спасибо
MiT
dynamic это везде зло…
Egor Sigolaev
Вот эта вся сахарщина из джса меня пугает
Egor Sigolaev
ООП еще не рассматривал, надеюсь там всё норм с этим
MiT
[
"1 вариант\n\n`",
{
"type": "code",
"text": "var reversed = Map.fromEntries(orig.entries.map((e) => MapEntry(e.value, e.key)));"
},
"`\n\n2 вариант\n\n`curr.keys.firstWhere(\n (k) => curr[k] == ‘key’, orElse: () => null);`"
]
MiT
Тут сахар из разных языков
Egor Sigolaev
Но пока основную часть я вижу из джса
MiT
ООП как обычный, вместо интерфейса просто абстрактный класс (как бы одно и тоже)
Egor Sigolaev
У дарта есть вообще изменяемые и неизменяемые переменные?
MiT
Или речь про иммутабельность?
Egor Sigolaev
Иммутабельность, как в котлине val
Egor Sigolaev
Спасибо, точно. Давно на джаве не писал )
Egor Sigolaev
А по поводу флатера. Вчера создал проект. Там уже какой то семпл был. И разделение в проекте есть на модули андроида и иоса. Как я понимаю, там будет нативный код для разных фич системных (аля гугл сервисы, будильник и прочее)?
Egor Sigolaev
И есть у кого то список библиотек для работы с сетью, di, локальной бд и т.д.?
MiT
Через MethodChannel или EventChannel да. Но это в разы быстрее чем в рн
MiT
[
{
"type": "link",
"text": "https://pub.dev/"
}
]
Egor Sigolaev
Что за ченелы? Это для системных фич?
Egor Sigolaev
Спасибо, но я там фиг найду нуные пакеты
MiT
Ага, мост между нативом и дартом
Egor Sigolaev
Понял, спасибо
Egor Sigolaev
А если кратко, что у вас самое популярное для di, работы с сетью, локальной бд?
Egor Sigolaev
Я поискал по пакетам, их там миллион
MiT
dio, provider (di через контекст), sqflite/sqlite3 (или moor orm)
MiT
Также есть ffi, можно код из c/c++ дергать
Egor Sigolaev
А с нейтив либами легко подружить флатер?
Egor Sigolaev
ffi как раз поможет с ndk?
MiT
Концепция легкая похоже на rest api (или rpc). Но надо несколько раз попробовать, чтобы понять как все правильно организовывать
Egor Sigolaev
Ну я про нейтив либы имел ввиду. В нативном андроиде я создаю CMake файл и сам cpp. Путём объявления функции, я в котлине через external fun sayHello() нахожу метод cpp файла и могу спокойно вызывать код.
Egor Sigolaev
Таким образом это усложняет ревёрс инженеринг потенциальному хакеру
Egor Sigolaev
Кстати, с ревёрсом у флатера как дела обстоят? Также как и с джава байткодом?
MiT
[
"Ну тут вы можете cpp напрямую из dart дергать\n\n",
{
"type": "link",
"text": "https://flutter.dev/docs/development/platform-integration/c-interop"
},
""
]
Egor Sigolaev
О, это оно! Спасибо большое.
Egor Sigolaev
А какие тулзы есть для этого? Насколько в текущих реалиях помогает обфускация на флатере?
Egor Sigolaev
Есть ли чат по флатеру по секюрити?
MiT
[
{
"type": "link",
"text": "https://flutter.dev/docs/deployment/obfuscate"
},
"\n\nНо если вы хотите именно собранное приложение разобрать, то таких тузов вроде нет пока"
]
MiT
[
{
"type": "link",
"text": "https://habr.com/ru/company/ligastavok/blog/536672/"
}
]
Egor Sigolaev
Годно, пасиба
Daniil Kostin
[
"есть что-то еще кроме этого, только чтоб размер внутренней кнопки само определяло?\n",
{
"type": "link",
"text": "https://pub.dev/packages/animated_toggle_switch"
},
""
]
MiT
Напиши сам) Ну или перепиши этот пакет)
|