Программирование : Dart & Flutter по-русски
Dmitriy Orteney
так не принято)
Serge Shkurko
помести справа кнопку крестика)
Dmitriy Orteney
Navigation Drawer преполагает рутовую навигацию, там не может быть назад
Павел
вот так придумали дизайн. у меня что-то типа читалки. НО выход на экран с статьей идет через навигацию
Павел
и страница не рутовая
Dmitriy Orteney
Ну дизайн если придумали, то придумали как разместить кнопки?)
Павел
хотел оглавление в шторке
Nikita Domnitskii
Бади полностью покажи
Filipp Tihonovich
"{\"Courses\":[],\"Id\":0,\"Name\":\"Programming\"}" это до декода
Nikita Domnitskii
Тебе строка приходит
Iurii Belobeev
themes.fromJson какой аргумент принимает? если string то понятно
Nikita Domnitskii
А ты её в декод суёшь
Bretbas
ага, сюда ложить его все таки
Bretbas
[
"а это как должно называться правильно?\n",
{
"type": "code",
"text": "ru/publicLib - будет соответсвовать твоему имени пакета"
},
""
]
Filipp Tihonovich
а че сделать тогда?
Bretbas
[
"у меня пакет вроде как ",
{
"type": "code",
"text": "com.example.testvk"
},
""
]
Bretbas
значит папка куда ложить как будет называться?
Nikita Domnitskii
Ну у тебя приходит строка и декодируется она как строка
Nikita Domnitskii
А потом ты эту строку передаешь как мапу
Bretbas
[
{
"type": "mention",
"text": "@Serge_Shkurko"
},
" вот как у меня"
]
Bretbas
куда файл этот блин пихать
Filipp Tihonovich
понял спасибо)
4??uzhoy .
как лучше менять аппбар в зависимости от state'ов если bloc builder внутри scaffold внутри body?
4??uzhoy .
я могу получить блок через провайдер и state но это будет тот стейт который предшествует текущему, если просить last то этот стейт уже future ( почему так интересно...) в общем как лучше это сделать не оборачивая scaffold в bloc builder а оставляя его в body scaffold'а ?
iamthevoid
Отказаться от блока и перейти на голые стримы ))
Nikita Domnitskii
Заверни аппбар в ещё один блок билдер
4??uzhoy .
он просит PreferredSizeWidget а блок билдер возвращает widget
4??uzhoy .
ну это когда нибудь попозже, не сейчас хех
Nikita Domnitskii
А что меняется? Только тайтл?
4??uzhoy .
тайтл и буттоны
Nikita Domnitskii
Можешь в отдельный виджет вынести и заимплементить преферед сайз
4??uzhoy .
понимаю что проще сделать блок билдер над скаффолдом но не хочется
4??uzhoy .
это уже есть, у фокса подсмотрел, так проблема то в том чтобы вернуть его апп бару по правильному стейту
4??uzhoy .
PlanFactState _state = BlocProvider.of (context).state; вот так я получаю стейт
4??uzhoy .
Transition { currentState: PlanFactLoading, enextState: PlanFactTotalScreen{tiles: 5, staggeredTiles: 5} }
4??uzhoy .
но в transition это currentState а не next
IB Akhrorov
Добрый день. Кто знает если хороший инструмент как supernova только для windows или linux?
4??uzhoy .
если запросить BlocProvider.of (context).last то это уже future
4??uzhoy .
чтобы получить state, идея в том что есть два отображения, за итог и за день, в апп бар хочу засунуть кнопку которая будет знать что сейчас отображается и менять на противоположное, в теле скаффолда вот такое else if (state is PFTotalScreen) { return StaggeredGridWrapper(state.tiles, state.staggeredTiles) ; } else if(state is PFDayScreen) { return StaggeredGridWrapper(state.tiles, state.staggeredTiles) ; }
vasilich
[
"Привет)\nКто-то нырял глубоко в либу animations от гуглов?\n",
{
"type": "link",
"text": "https://pub.dev/packages/animations"
},
"\n\nМне не понятен(пока что) один нюанс при использовании SharedAxisTransition\nВ одну сторону имеем 3 рендера, один текущего компонента и два следующего\nА обратную сторону - только один рендер предыдущего)\n\nВот как это выглядит в логах ",
{
"type": "link",
"text": "https://tppr.me/KSBAK"
},
"\n\nВот сам код компонента - ",
{
"type": "link",
"text": "https://github.com/flutter/packages/blob/master/packages/animations/lib/src/shared_axis_transition.dart#L339"
},
"\n\nВопрос в том - нормальное ли это поведение или можно как-то избежать двойного рендера “следующего” компонента?"
]
Sergey Hottabych
У меня IntelliJ почему-то тупит и показывает No Devices. Приходится лазить в Android Studio в AVD Manager, и ручками запускать эмуль
Nikita Domnitskii
[
{
"type": "code",
"text": "if(state is StateA) return IconButton(onPressed:bloc.add(ShowStateBEvent()));"
}
]
Ssss Diii
объясните пожалуйста как работает asynk и await
Bretbas
[
"Народ, как переопределить стандартный класс ",
{
"type": "code",
"text": "FlutterApplication"
},
"?\nВчера пробовал. Создал его в папке ",
{
"type": "code",
"text": "android"
},
", рядом с ",
{
"type": "code",
"text": "AndroidManifest.xml"
},
", в ",
{
"type": "code",
"text": "AndroidManifest.xml"
},
" указал его соответственно\n\nПапки android/app/src/main/java/ru/<название_пакета> у меня нет"
]
Evgeny Cherkasov
[
{
"type": "code",
"text": "async"
},
" указывает что функция асинхронная.\nПри ее вызове она выполняется до первого ",
{
"type": "code",
"text": "await"
},
" синхронно.\nТо, что помечено ",
{
"type": "code",
"text": "await"
},
" выполняется асинхронно, т.е. функция ждет пока не выполнится этот вызов.\nДальше опять продолжает выполняться синхронно и т.д."
]
Serge Shkurko
потому что у тебя kotlin
Serge Shkurko
я же писал тогда папка kt
Serge Shkurko
и идешь до самой последней папки
Serge Shkurko
там скорее всего будет файлик MainActivity.kt
Bretbas
что дальше? Рядом с ним ложить? Получается `Application.kt
Ssss Diii
подскажите setState(() {}); может тело быть пустым?
Ssss Diii
а после вызова setState не сработает initState()?
SP
Подскажите пж. Мне нужно получить результат из асинхронной функции в обработчике нажатия кнопки. Как мне это сделать
SP
Отдебажь и посмотри что срабатывает
vasilich
onPress: () { yourAsyncFn().then((value) => do what you need) }
vasilich
[
"Но лучше доки то читнуть\n",
{
"type": "link",
"text": "https://dart.dev/codelabs/async-await"
},
""
]
SP
Да я читал, но крыша уже потиху едет
DVS (Read The F.ng Manual) Studio (NoHello)
[
"что-то типа вброса на правах ",
{
"type": "strikethrough",
"text": "рекламы"
},
" члена сообщества)) (читай ProductHunt на минималках)\n\nзалетели вчера на SMZhack. сделали почти готовую апку для самозанятых фотографов и тех кому нужны реально качественные фотки на нашем прекрасном и всеми любимом флаттере - PhotoLocal\n",
{
"type": "link",
"text": "https://smzhack.ru/vote/tpost/9ax6kfra8z-photolocal"
},
"\n\n+ вторая наша команда сделала Биржу микро-дел c системой Автоматического подбора и назначения исполнителей под каждый заказ\n",
{
"type": "link",
"text": "https://smzhack.ru/vote/tpost/877xkc7voo-dela-vne-doma"
},
"\n\nсобственно, лайк-шек-репост и Vote в рухакерах))"
]
Serge Shkurko
только синтаксис конвертируй из явы в котлин
Константин Буланов
[
{
"type": "link",
"text": "https://m.habr.com/ru/post/497278/"
},
" мне вот тут понравилось как подан материал"
]
roman G ??
[
"кто-нибудь сталкивался с\n",
{
"type": "pre",
"text": "dalvik.system.PathClassLoader[DexPathList[[zip file \"/data/app/APP_NAME-1/base.apk\"],nativeLibraryDirectories=[/data/app/APP_NAME-1/lib/arm, /data/app/APP_NAME-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]] couldn't find \"libflutter.so»",
"language": ""
},
"\n\nдобавление \nndk {",
{
"type": "italic",
"text": "\n a"
},
"biFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'mips', 'mips64', 'arm64-v8a'\n}",
{
"type": "italic",
"text": "\n"
},
"\nВ defaultConfig не помогло"
]
Bretbas
а в AdroidManifest.xml все также да?
???????
[
{
"type": "code",
"text": "couldn't find \"libflutter.so»"
},
"\n\nЭто ты в чят криво вставил или в конфиге гдет перекосило кавычки?)"
]
???????
[
"А с этим добавлением собираешь как \n",
{
"type": "code",
"text": "flutter build apk --split-per-abi"
},
"\n?"
]
roman G ??
Да, последнюю ковычку съел макбук
roman G ??
Нет, как и обычно
???????
Вот попробуй так собрать)
roman G ??
[
"сразу получил это\n\n",
{
"type": "pre",
"text": "* What went wrong: \nA problem occurred evaluating root project 'android'. \n> A problem occurred configuring project ':app'. \n > Conflicting configuration : 'mips64,x86_64,x86,armeabi-v7a,armeabi,mips,arm64-v8a' in ndk abiFilters cannot be present when splits abi filters are set : x86_64,armeabi-v7a,arm64-v8a",
"language": ""
},
""
]
???????
Попробуй закомментить это дело значит)
???????
И снова также собрать)
roman G ??
получил в итоге 3апк, какую из них мне отдавать пользователям?
???????
Под их архитектуру)
???????
А так, маркет сам отдаст нужный
roman G ??
оу, ну это же сложно у нас не через маркет.. нужно апк отдать какой-то
???????
Ты же с Даниилом работаешь?) Помучай его)
Happy
Арм в7 это медиатеки всякие?
чумак
Ребят, скачал шрифт который нужен. Закинул в ассетс. Ошибку выдает. Вот код в пабсеке который был flutter: fonts: family: - BalooTamma2 asset: - assets/BalooTamma2-ExtraBold.ttf
Dmitriy Orteney
[
"У меня чот подобное было, как-будто so не подкладывалась в апк, ",
{
"type": "code",
"text": "flutter clean"
},
" помогал"
]
Chad
У кого-нибудь были проблемы с iOS-транзишенами? По какой-то причине именно с ними даже если стак навигации пустой отображается кнопка перехода назад И при переходе текущий экран попается и появляется тупо белый экран
Ali Tlisov
Вопрос новичка общего плана. Вот сделал я себе распрекрасное web приложение, делает все что мне нужно. Остался последний момент - как сделать так чтобы все что приложение навычисляло для каждого пользователя получить в каком-то одном месте? Подойдут любые варианты из которых можно будет выбрать наиболее удобный. Например даже отправка этих данных на определенный ящик почты ну или что-то более современное. Но желательно без учетных данных внутри приложения и без запуска своего сервера с бекендом.
Bretbas
подскажите пожалуйста, если мне нужно осуществить изменение email в приложении, с последующим его подтверждением(соответственно надо зайти на почту), то чаще всего браузер в этом случае подтягивают? Или пользователь сам должен выйти из приложения, зайти в браузер, зайти на почту, пройти по линку для подтверждения, и ему(браузеру) мой сервер, после успешного подтверждения, сгенерирует html, где будет ДИПЛИНК, который будет перенаправлять в приложение?
Bretbas
Именно так делают сейчас? Или есть еще какие-то способы?
Andrey Rusakov
Вопрос: нормально ли, что вызывается build у экранов, которые в данный момент не активны (с них был сделан переход, используя Navigator.push) при повороте экрана? Зачем, если так и должно быть? Спасибо!
Dmitriy Orteney
они могут быть видны, если твой следующий роут, например, диалог
Andrey Rusakov
Спасибо, логично.
Олжас Сулеймен
FutureBuilder
Bretbas
подскажите пожалуйста, если мне нужно осуществить изменение email в приложении, с последующим его подтверждением(соответственно надо зайти на почту), то чаще всего браузер в этом случае подтягивают? Или пользователь сам должен выйти из приложения, зайти в браузер, зайти на почту, пройти по линку для подтверждения, и ему(браузеру) мой сервер, после успешного подтверждения, сгенерирует html, где будет ДИПЛИНК, который будет перенаправлять в приложение?
Bretbas
Именно так делают сейчас? Или есть еще какие-то способы?
Олжас Сулеймен
не видел что бы открывало приложение почты, на врятли такое пропустять, второй вариант нормальный
Bretbas
тоесть второй в основном используют сейчас?
Олжас Сулеймен
в основном на почту ссылка которое подхватывает приложение
Bretbas
[
{
"type": "mention",
"text": "@ykmnkmi"
},
" , а смотрите, в случае, если я делаю аутентификацию через VK, то стоит ли приложение в браузер редиректить и обратно?"
]
Олжас Сулеймен
вк не скажу, телеграм и стим подхватывали
Bretbas
дело в том, что я смотрю, есть какие то либы, которые прям на клиенте access_token получает
Bretbas
[
{
"type": "link",
"text": "https://pub.dev/packages/flutter_vk_login"
}
]
Bretbas
я не понимаю: `final VkLoginResult result = await vkSignIn.logIn(['email']);` эта строка должна браузер открыть чтоли
Bretbas
с vk страничкой разрешений
Олжас Сулеймен
по этому я не спец, можно во флатере открыть страничку и отловить переход
Bretbas
открыть страничку, как браузер? или что?
Олжас Сулеймен
да, через web view
Bretbas
просто дело в том, что у меня реализована на сервере аутентификация через стороннего поставщика, и Angular клиент(веб клиент) работает на ней
Bretbas
[
"там нужно сделать один запрос http, на мой сервер, скажем:\n",
{
"type": "code",
"text": "localhost/auth/vk"
},
""
]
Bretbas
который редиректнет клиента на страницу vk с разрешениям прав и авторизацией
Bretbas
затем после разрешения прав, vk редиректнет на мой сервер, там создастся jwt токен
Bretbas
и вот тут, я не могу понять,
Bretbas
как передать его клиенскому приложению, которое мобильное
Bretbas
[
"с ",
{
"type": "code",
"text": "Angular"
},
" клиентом все понятно, он сам в браузере находится"
]
Bretbas
[
"вот как с ",
{
"type": "code",
"text": "web view"
},
" я получу ",
{
"type": "code",
"text": "jwt"
},
" токен, после того, как полностью процесс аутентификации через vk пройдет успешно?"
]
Bretbas
Чтобы более понятно было:
IB Akhrorov
[
{
"type": "pre",
"text": "Какая разница между bloclistener и blocbuilder?",
"language": ""
},
""
]
Bretbas
вот как работа происходит
Bretbas
тоесть через сервер я получаю все данные от стороннего поставщика, создаю/не создаю пользователя, генерирую jwt токен, и отдаю его клиенту, в данном случае Angular
Bretbas
Angular <— это браузерный клиент, получение jwt происходит легко
Bretbas
а с flutter как будут обстоять дела?
IB Akhrorov
делаюе post request передаете туда username password получаете token потом с помощью токена делает get запросы
Bretbas
[
"что-то не особо понятно.\n`response = await ",
{
"type": "link",
"text": "http.post"
},
"(kPostAuth,\n body: {\"username\": kUsername, \"password\": kPassword});`\nЭто куда запрос? Что за"
]
IB Akhrorov
это чтобы получить token
IB Akhrorov
kPostAuth это url
IB Akhrorov
это json web token
Bretbas
блин, причем он тут?
Bretbas
Я вообще о другом говорил
Bretbas
Прочитайте внимательно мои сообщения
IB Akhrorov
здесь вы написали про jwt
Bretbas
вы вырвали из контекста
Bretbas
Я описывал проблему
Bretbas
которая связана с передачей jwt
Nikita Domnitskii
Какая разница?
vasilich
[
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/50713#issuecomment-620098640"
},
"\n\nВоспроизвел баг, может кому-то будет полезно"
]
IB Akhrorov
Какая у вас проблема ? Одним словом можете сказать
Bretbas
[
"разница в том, что в случае с ",
{
"type": "code",
"text": "angular"
},
" я (ВНИМАНИЕ: в упрощенной форме сейчас говорю), я перехожу по:\n",
{
"type": "code",
"text": "/auth?access_token=<тут_мой_access_token"
},
"\nЭто маршрут на Angular, и оно вытащит из маршрута jwt"
]
Nikita Domnitskii
Ну так открой веб вью
Bretbas
Вот смотрите картинку, как клиент на angular у меня взаимодействует с сервером для получения jwt токен, при аутентификации через VK
Nikita Domnitskii
И вытащи с редирекченого урла токен
Bretbas
хм, ну допустим вытащил. Дальше что? убираем веб view?
Bretbas
[
"я тогда не понимаю, зачем это:\n",
{
"type": "code",
"text": "https://pub.dev/packages/flutter_vk_login"
},
""
]
Bretbas
[
{
"type": "link",
"text": "https://pub.dev/packages/flutter_vk_login"
}
]
Bretbas
[
"это для того, чтобы на клиенте прям(на Flutter) получить ",
{
"type": "code",
"text": "access_token"
},
" вконтакте, и потом его кинуть на сервер через простой ",
{
"type": "code",
"text": "http"
},
" запрос, сервер в этом случае по ",
{
"type": "code",
"text": "access_token"
},
" вконтакте попросит у него все что ему нужно для аутентификации пользователя, сгенерирует jwt и вернет ответом?"
]
Bretbas
Правильно я понимаю?
Nikita Domnitskii
У вк отдельное сдк под натив с авторизацией через официальный клиент
Bretbas
ок, а как это с моим сервером будет взаимодействовать?
Bretbas
че за официальный клиент)
Nikita Domnitskii
Ну нафига тебе велосипеды городить, если у тебя всё сделанно по сути
Bretbas
[
"я правильно понимаю, что эта библиотека сама ПОСЛЕ авторизации и разрешении прав пользователя в vk, получит ",
{
"type": "code",
"text": "access_token"
},
" контакта? Прям на flutter"
]
Nikita Domnitskii
Ну скорее всего
Bretbas
тогда все равно неясно как это все работает, так как ты должен, когда создаешь приложение в vk, указать доверенный url, куда будет лететь код подтверждения(по которому потому access_token получаешь)
Bretbas
так вот в моем случае, это url моего сервера
Bretbas
а в случае с этой либой тогда что?
Bretbas
Чтобы вы понимали, я об этом:
Bretbas
[
"это url моей мидлвари на сервере, которая получает именно там ",
{
"type": "code",
"text": "access_token"
},
""
]
Bretbas
[
"Но если мы выяснили, что та библиотека сама, прям НА клиенте получает ",
{
"type": "code",
"text": "access_token"
},
", то начинает у меня в голове какой-то бардак наступать)"
]
Nikita Domnitskii
Там разные приложения можно создавать
Bretbas
это то, которое и нужно
Nikita Domnitskii
Ну и вообще не заморачивайтесь, сделайте как на ангуляре
Bretbas
у меня angular тоже на нем работает
Bretbas
тут не в этом дело, заморачиваться, не заморачиваться) Дело в том, что если есть готовое решение, то просто его нужно обуздать, и все.
Bretbas
а проблема в том, что я не пишу на Flutter) пишет мой приятель клиента, который очень плохо шарит пока
Nikita Domnitskii
Ну так у тебя есть готовое решение, лол
Nikita Domnitskii
Вк сдк это вообще не обязательный компонент
Bretbas
ладно, посмотрим) Но в принципе, если поднять webview, я смогу достать параметр из url, на который редиректнул сервер, чтобы передать мне jwt?
Nikita Domnitskii
На сколько я помню да
Bretbas
на самом деле, вы сейчас наверное меня считаете идиотом, передавать jwt через url запроса) Я поэтому оговорился, что это в упрощенной форме
Bretbas
[
"на самом деле я на сервере генерирую jwt, и кладу его в ",
{
"type": "code",
"text": "var code =securityCache.Add(accessToken);"
},
", который мне выдает одноразовый код"
]
Bretbas
[
"именно код я передаю через url запроса:\n",
{
"type": "code",
"text": "/auth?code=<тут_код>"
},
""
]
Bretbas
потом достаю его, и обращаюсь на сервер снова, со своим одноразовым кодом, за jwt)
Bretbas
получаю jwt из кеша, и все
Bretbas
ну тогда буря. Значит в любом случае решим
Sergey Lavinov
[
"Господа кто сидит на stable и использует пакет ",
{
"type": "code",
"text": "test"
},
", дайте версию, пожалуйста"
]
Sergey Lavinov
Неужели никто одновременно не использует самый популярный бранч флаттера и не пишет тесты ?)
чумак
Ребят, я сделал код дефолтный, хочу кликать и на новую страницу./ Не шарю в виджетах, они надо все эти stateless и так далее? Просто у меня уже здоровый говно - код. Да.
IB Akhrorov
Navigator.push();
чумак
и не ебать себе мозги виджетами? вконце кода вставить?
IB Akhrorov
поставь в фунции onPressed
IB Akhrorov
floatingActionButton
чумак
понял, спасибо сейчас попробую
Alexander PhatoM
всем привет, может кто знает как отправлять уведомления каждый день с текстом, зависящем от дня?
IB Akhrorov
flutter_local_notifaction plugin есть
IB Akhrorov
там можно указать время
Alexander PhatoM
про время я знаю
Alexander PhatoM
я про контент спрашиваю
Alexander PhatoM
мне нужно каждый день видеть разный текст в уведомлении
IB Akhrorov
Контент откуда берете?
чумак
я тут прочитал воо что
чумак
типо надо создать класс главной, потом второстепенной
|