Программирование : Dart & Flutter по-русски
Виктор
Чинится перезагрузкой ide, мб ещё как-то
Den
спасибо за наводку. поковыряю
Виктор
Этот проект откуда-то скачан?
Виктор
(типо должен работать?)
Den
только DI прикрутил и всё
Виктор
Ну, я уверен, что это затупы ide, если все остальное сделано корректно
Виктор
inject.dart не использовал
FatShibe
[
"кто-нибудь использовал stripe? он почему-то вешает мне загрузку на ",
{
"type": "code",
"text": "Waiting for observatory port to be available"
},
""
]
Davron Asrorov
Привет. Кто уже платежки интегрировал на флаттер, что есть из рф? Какие либы?
Виталий
Вызывать как стандартный нативный код
Stanislav Sagan
Здравствуйте, я добававил крестик в поле ввода для очистки инпута, но теперь вводимое число находится не по-середине. Подскажите как снова центрировать((
Stanislav Sagan
Добавлял вот таким способом
admin
есть примеры как например три стрима объединить в один ?
Ярослав Капустин
Гугл))))
Ярослав Капустин
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/36571924/how-can-i-merge-multiple-streams-into-a-higher-level-stream"
}
]
Ярослав Капустин
Или я использовал rxdart
admin
rxdart не хочу тянуть)
Ярослав Капустин
Не тяни)))
Vitaly Pashichev
[
"Всем даров. Когда нибудь пользовался ",
{
"type": "link",
"text": "https://pub.dev/packages/flutter_downloader"
},
"? Почему так сильно скачет прогресс загрузки?"
]
Vitaly Pashichev
Ровно по 11%
KeepOnSmiling ??
[
"Вопрос по правилам исключения ProGuard. Имеет ли смысл включать строчку вроде:\n",
{
"type": "pre",
"text": "-keep class java.** { *; }\n\n",
"language": ""
},
"Если у меня используется path_provider? Он ведь к классам явы обращается... или это о другом речь?"
]
KeepOnSmiling ??
[
"Или можно Уже:\n",
{
"type": "pre",
"text": "-keep class java.io.** { *; }\n\n",
"language": ""
},
"но вдруг ещё какие-то классы зависимостей у меня в проекте окажутся из java, он их попортит, поэтому подумал, что может лучше сразу пошире охватить"
]
Sergey ?
> -keep class java.** { *; } тогда уже можно и вовсе не включать прогард )
KeepOnSmiling ??
А почему? Собственные классы (код в lib) также разве все туда попадут?
Sergey ?
прогард(R8) только обрабатывает dex bytecode
Sergey ?
native code он не трогает
KeepOnSmiling ??
Т.е. всё, что в lib всё равно не будет обфусцировано?
Sergey ?
конечно да и зачем, это нативный код. Там немного други правила реверс инжениринга
Fearless Cry
Все что в либ в релизе по идее в бинаре будет
KeepOnSmiling ??
А насколько сложно декомпилируется нативный код?
KeepOnSmiling ??
Пытаюсь понять целесообразность обфускации проекта...
Sergey ?
он не декомпилируется, а дизассемблируется
Sergey ?
и там парсят хедеры, а не сам машинный код
KeepOnSmiling ??
А все переменные остаются там или заменяются?
KeepOnSmiling ??
В дизасемблированном варианте
KeepOnSmiling ??
Хотя там же только какие-то регистры.. :)
KeepOnSmiling ??
Там, наверное, уже не до переменных
Sergey ?
можете послушать подкаст с разработчиком dart vm, там оговаривался и этот вопрос
KeepOnSmiling ??
А для чего вообще прогардом тогда обфусцировать флаттеровский код?
KeepOnSmiling ??
Или он обратно остаётся нетронутым..
KeepOnSmiling ??
Я тогда вообще не пойму смысла прогарда :)
Sergey ?
флаттеровский код это дарт, он не трогается прогардом
Sergey ?
чтобы убрать ненужный код от android support и других библиотек при нативной разработке
KeepOnSmiling ??
А что там вообще останется тогда для прогарда, если он не будет трогать ни нативный, ни флаттеровский код..? :)
KeepOnSmiling ??
Какой в нём смысл остаётся?
Sergey ?
для флаттера не большой
Sergey ?
для нативных приложений есть смысл
KeepOnSmiling ??
А для нативных какой? Флаттеровский код же в нативный и компилится, следовательно, есть смысл и для флаттеровского проекта?
Sergey ?
я поняд, тебя конфузит слово "нативый код"
Sergey ?
native code(c++) компилируется в native library(*.so) файлы
KeepOnSmiling ??
А флаттер трансформируется в этот С++ или нет?
KeepOnSmiling ??
при компилировании
Sergey ?
джава(котлин) код компилируется в dex bytecode который и обрабатывается прогардом
Sergey ?
он собирается сразу в бинарь(*.so)
FatShibe
[
{
"type": "link",
"text": "https://flutter.dev/docs/development/platform-integration/platform-channels"
},
"\nэто оно?"
]
KeepOnSmiling ??
А прогард, соответственно, обрабатывает только вот этот dex байт код, так?
FatShibe
может быть такое, что такие либы виснут на Waiting for observatory port to be available?
FatShibe
я вчера весь день пытался понять почему у меня stripe вешает загрузку приложения
Виталий
Такого я не встречал, максимум долго интент запускался
KeepOnSmiling ??
А, так получается, что флаттеровский код компилится в нативную библиотеку сразу, минуя нативный код, поэтому прогард не может его обработать. Получается для прогарда в принципе мало работы остаётся :) Такое впечатление, что им навредить больше можно, чем пользы получить :)
FatShibe
[
"а по-поводу ",
{
"type": "code",
"text": "No implementation found for method"
},
" может кто подсказать? я как раз копипастнул код из либы в отдельный файл, и когда при импорте пытаюсь его вызвать, получаю эту ошибку"
]
Виталий
Хот релоад отлетает?
Виталий
Когда пишешь нативные методы - платформенный код надо собирать с нуля
Виталий
Хот рестарт, так называемый
FatShibe
возможно, что отлеает, я не попробовал, так как из-за ошибки нет смысла рестартить
KeepOnSmiling ??
В моменте компайла флаттеровского кода в нативную либу?
FatShibe
страйп это нативная штука для андроида? или я что-то не так понял
Виталий
Нет, платежная система
KeepOnSmiling ??
Так вроде же выше было написано, что флаттеровский код "собирается сразу в бинарь(*.so)"..
Виталий
А вы как пытаетесь запустить, на физ устройстве или на эмуляторе?
Sergey ?
бинарь это и есть нативный код
Виталий
А он случаем не Meizu?
KeepOnSmiling ??
Так да, я вроде тоже о том же..
KeepOnSmiling ??
Или нет..
FatShibe
про meizu было что-то в гугле, но это не совсем мой случай
Виталий
flutter clean пробовали?
FatShibe
угу, пересобирать пробовал
FatShibe
[
"конкретно при подключении ",
{
"type": "link",
"text": "https://pub.dev/packages/stripe_payment"
},
" висит"
]
KeepOnSmiling ??
Или нет.. не пойму, но нативный код это С++, но флаттер компилируется сразу в нативную библиотеку *.so. Как получается, что флаттер вначале собирается в код, если сразу в либу? :)
Sergey ?
C++ это сорс код который компилируется в нативную библиотеку, которая работает не на уровне андроид рантайма, а на уровне ядра
???????
В роадмапе есть поддержка либ на плюсах
???????
Но это пока не сейчас и не приоритет
KeepOnSmiling ??
О чём могут говорить вот эти предупреждения? ProGuard отключен в build.gradle
Sergey
подрубал кто-то логин с телеги???
Александр Котков
Там же есть ссылка специально!
??
Подскажите а как в вскоде добавить автоформатирование? Флаттер
Alik E.
В настройках есть пункт fixOnSave. Выставь на true. При сохранении будет форматировать
??
Он форматирует или только проверяет синтакс?
KeepOnSmiling ??
В ней нифига не понять :)
Sergey
Всем привет, кто-то делал логин через телегу во флаттере?
KeepOnSmiling ??
Как загружать новую версию в виде AppBundle в GooglePlay для уже опубликованных приложений? (ранее APK). Я пытаюсь зарегиться в подписях, у меня есть свой .keystore файл. В какой пункт из трёх я не закидываю этот файл, пишет: "Закрытый ключ неправильно зашифрован или его тип не поддерживается". В чём может быть проблема?
KeepOnSmiling ??
мой ключ (который ГП не принимает) создавался через keytool. Он успешно подписывал прошлые apk в ГП.
Виталий
Просто загружаете аппбандл в новый выпуск
Виталий
Подписанный тем же ключом
KeepOnSmiling ??
Именно и сделал, но он говорит, что нужно вначале зарегистрироваться у них в программе
Виталий
Подписи Гугл плей?
KeepOnSmiling ??
А для этого, как я понял, нужно предоставить им свой ключ для апк..
Виталий
Он же сам генерируется на стороне консоли
Виталий
Просто соглашаетесь и все, потом если надо, то просто перегенерирует одной кнопкой
Виталий
Ключей им от вас не надо
KeepOnSmiling ??
Нее.. там что-то другое..
Виталий
Максимум, при замене ключа загрузки
Виталий
Им понадобится сертификат от ключа загрузки новый
KeepOnSmiling ??
вот что происходит, если закидывать AppBundle
Виталий
У вас он в версиях не предлагает каждый раз вступить в эту программу?
KeepOnSmiling ??
Вы про эту форму?
Виталий
Ибо у меня это было просто "Использовать подпись Google Play?"
Виталий
Там соглашаешься и всё
KeepOnSmiling ??
Так туда же только ключ закинув можно продолжить :)
KeepOnSmiling ??
А ключ ему почему-то не нравится :)
Виталий
Ключ загрузки - да
KeepOnSmiling ??
А где его взять можно?)
KeepOnSmiling ??
Экспортируется из Студии?
Виталий
А, всё ок, да, у меня был кейс что я сразу настраивал всё и при публикации каждого нового приложения
Виталий
[
{
"type": "link",
"text": "https://support.google.com/googleplay/android-developer/answer/7384423"
}
]
Виталий
Там всё расписано
KeepOnSmiling ??
[
"Сгенерировал через: ",
{
"type": "pre",
"text": "keytool -export -rfc -keystore ...",
"language": ""
},
", получил pem-файл, закинул снова туда, но всё тоже самое - пишет неправильно зашифрован..."
]
Виталий
В пункте меню слева есть "Подписи приложений"
Виталий
Проверьте цифровые отпечатки
Виталий
Вы же апк можете загружать?
KeepOnSmiling ??
Ага, ну там та же самая форма открывается. А апк да, подписываю нормально..
Виталий
Вас видать просят не JKS
Виталий
а ключ который в нем
Виталий
Там есть опция "Экспортировать из JKS"
Виталий
JKS это же просто враппер для ключей
Виталий
оттуда берутся ключи для подписи
Виталий
А гугл плей просит как раз ключ который внутри JKS
KeepOnSmiling ??
Я уже во все три пункта попробовал свой JKS закинуть, но везде одно и тоже :)
Виталий
Что он во втором варианте просит сделать?
Виталий
[
{
"type": "link",
"text": "https://medium.com/google-developer-experts/exploring-google-play-app-signing-b4d296f4ee9"
}
]
Виталий
Кажись тут именно ваш кейс рассматривается
KeepOnSmiling ??
Аа, точно, сорри, я напортачил. Когда сделал по описанному примеру, получил действительно тот файл, который он нормально переварил. Спасибо за помощь!
Виталий
Да ключи подписи это ад
Виталий
Сам об них сто раз спотыкался
KeepOnSmiling ??
Это реально жесть :) но хорошо, что сработало, теперь буду знать как с ними бороться :)
Sergey David
А почему сто раз? Почему не удаётся научиться на ошибках и успехах?
KeepOnSmiling ??
В appbundle билд добавляется такой файл: base/assets/flutter_assets/LICENSE - можно ли его удалить, чтобы он не добавлялся в релиз? А то он весит аж 640кб, я лучше ассетов туда накидаю на этот размер :)
KeepOnSmiling ??
13 тысяч строк лицензии Apache :)
Виталий
Удалось в конце концов, да и сто раз это утрирование, когда уже понял что занимает много времени, просто автоматизировал подпись и загрузку в сторы
Dmitry Lvov
Всем привет! А подскажите пожалуйста Hummingbird , кто-то юзает уже по полной? Это от флаттера сильно отличается? Хорошо ли подходит для того чтобы на нем админку запилить?
Roman Peshkov
не production ready
Roman Peshkov
но запилить можно
Dmitry Lvov
а есть какое то ориентировочное понимание, насколько зашло всем? Какие то даты может релиза условные? Флаттер как понимаю уже занял свои позиции
Roman Peshkov
[
{
"type": "link",
"text": "https://medium.com/flutter/flutter-for-web-early-adopter-program-now-open-9f1fb146e4c4"
}
]
Roman Peshkov
из последних новостей
Roman Peshkov
как зашло - никто не говорит, рано
Dmitry Lvov
[
{
"type": "mention_name",
"text": "Roman",
"user_id": 211938540
},
" окей, спасибо за информацию"
]
Stanislav Sagan
Подскажите, чем один класс отличается от второго?
Stanislav Sagan
[
"Или задумка в том что несколько классов могут наследовать ",
{
"type": "code",
"text": "SearchProductPage"
},
" ?"
]
Stanislav Sagan
Не очено понимаю зачем разбивается на пару классов то что будет работать если запихнуть в 1
admin
[
{
"type": "link",
"text": "https://youtu.be/AqCMFXEmf3w"
}
]
Stanislav Sagan
Сложно Типа у них стейты сохраняются поэтому разбивать.. и я не очень понял а чего он смог перезаписать имя не сбросив каунтер. Это нормалоьно разве?) Каунтер даже не статичный
KeepOnSmiling ??
Как делать видеоредактор на флаттере с экспортом в файл? :) какие вообще мысли? Подключать ffmpeg + экспорт файлов кадров на ФС? Или на С++ писать свой модуль, который на лету примет буфер изображения и соберёт в видео? Ещё варианты существуют?
northelks
непосредственно с самим видео на дарте самом лучше не заниматься, лучше нативка + ffmpeg и флаттер только для чистого UI
Савостьянов Андрей
[
"Мой pet project https:",
{
"type": "bot_command",
"text": "/andx2"
},
".github.io . В принципе - работает. С последним обновлением 1.8.2. починили, например, реализацию событий наведения курсора (onHover, onMove и пр.), подкрутили производитетельность. Но, к сожалению, совсем нет доков. К примеру, как перетащить файл из ФС на виджет и обработать onDrop я так и не разобрался."
]
maxnemoy
[
"так ",
{
"type": "mention",
"text": "@PlugFox"
},
" давненько же уже показал пример реализации драг и дропа под веб ",
{
"type": "link",
"text": "https://gist.github.com/PlugFox/ffe83a91ce50f9c78a5b1d6674e36d1b"
},
""
]
???????
Ага, оно работает. Хочу все допилить до полноценного виджета, да лапки не доходят
Савостьянов Андрей
Плюс в карму этому господину!
Dmitry Bubnenkov
[
{
"type": "pre",
"text": "class GetTestData extends StatefulWidget {\n @override\n StateGetTestData createState() => StateGetTestData();\n}\n\n",
"language": ""
},
"Подскажите я правильно понимаю, что именно тут два класса создается. т.е. происходит следующее. Когда мы вызываем:\n",
{
"type": "code",
"text": "GetTestData()"
},
" создается сам виджет и сразу же при его создании создается класс стейта ",
{
"type": "code",
"text": "StateGetTestData()"
},
" \nИ сам виджет создается и умирает. А класс стейта живет."
]
Dmitry Bubnenkov
т.е. вызов: GetTestData() создание виджета И вызову внутри него StateGetTestData() создание стейта?
??
Как sharred pref кидать в другие страницы? Или вообще как реализовать что-то типа глобал стора
Dmitry Lvov
Спасибо, гляну
Dmitry Bubnenkov
Что тут не так?
Sergey ?
Проверь импорты стринг класса
Dmitry Bubnenkov
А без них return не будет работать?? Просто String это же базовый тип
DVS (Read The F.ng Manual) Studio (NoHello)
Ф-я должна возвращать Future
DVS (Read The F.ng Manual) Studio (NoHello)
Она же async
Dmitry Lvov
[
"ты про ",
{
"type": "link",
"text": "https://pub.dev/packages/shared_preferences"
},
" ? Да просто берешь и юзаешь их где хочешь"
]
Dmitry Lvov
сначала записывай, потом извлекай
??
Они в глобалке держаться автоматом?
Dmitry Lvov
можешь под них репозиторий завести, я думаю это более архитеатурно правильно, хотя особо не шарю еще
??
всмысле как пример другим
Dmitry Lvov
ну у меня они работают даже после перезагрузки приложения
??
Не, я с реактивного бека
Dmitry Lvov
а, я не писал бэк на дарте. ) И как вообще? Быстро реализуете задачи?
??
Не, я всмысле бэкграунда (с опытом)
|