Программирование : Dart & Flutter по-русски
iamthevoid
А это разумно?))
Sergey Salnikov
да, я чуток слышал =) немного инсайдерской инфы =)
Max
Flutter-часть в проекте небольшая, прямо скажем. Пока обходимся.
Serge Shkurko
в changelog'e firebase_messaging видел что теперь можно на ios его использовать вместе с другими делегатами уведомлений (например flutter_local_notifications) Кто-нибудь уже пробовал?
kk
Всем доброго дня, вопрос такой, кто нибудь пробовал писать бэкенд на дарте?
Serge Shkurko
экспериментировал, но по синтетическим тестам dart vm проигрывает относительно node.js / java и аналогам в производительность
Serge Shkurko
[
"пара хороших фреймворков на бэк: ",
{
"type": "link",
"text": "https://aqueduct.io/"
},
" и ",
{
"type": "link",
"text": "https://angel-dart.dev/"
},
""
]
Radomir Epur
Всем привет. Кто-нибудь знает как называется этот плагин для VS? Он запускает хром в flutter for web(скорее всего не только это). Или, может быть знаете другой удобный инструмент. Не обязательно для VS code можно и для android studio, главное чтобы был удобен(мб даже hot reload чтобы работал)
Yuriy
эт обычная панель при запущенном отладчике
Oleg
ну и собственно плагина flutter для vs хватит
Radomir Epur
Оу, сори, VS до этого не пользовался. Как написал сообщение и запустил проект панелька появилась. Стыдно(
Altair
Flutter desktop embedding
Altair
[
{
"type": "link",
"text": "https://github.com/google/flutter-desktop-embedding/blob/master/README.md"
}
]
Serge Shkurko
[
".vscode/launch.json\n\n",
{
"type": "pre",
"text": "{\n \"version\": \"0.2.0\",\n \"configurations\": [\n {\n \"name\": \"Run app\",\n \"request\": \"launch\",\n \"type\": \"dart\",\n \"flutterMode\": \"debug\",\n \"program\": \"lib/main.dart\",\n }\n}",
"language": ""
},
"\n\nв vscode: выполнить -> запустить отладку (f5)"
]
Radomir Epur
Спасибо, разобрался.
Dilshod Tursimatov
[
"Hi friends !\n\nHow can i redirect to login screen on dio intercepter 401?.\n\n",
{
"type": "code",
"text": "onError: (DioError dioError) async{\n if(dioError.response.statusCode==401){\n\n final SharedPreferences prefs = await _prefs;\n\n prefs.remove(\"TOKEN\");\n //send to login page here??\n }\n return dioError;\n }"
}
]
Max
My way would be the top level widget listening to the stream of "needToLogin" flag.
Max
BTW, it's a Russian language community)
Dilshod Tursimatov
Давайте тогда по русском :)
Max
Думаю, другие способы тоже есть, типа "напрямую писать в роутинг". Но будет грязнее.
Max
А какой стейт-менеджмент используется?
Dilshod Tursimatov
Provider 3.0.0
Max
Собственно "протух токен" - это стейт приложения. Поэтому и делать нужно так же, как и всё остальное со стейтом.
Dilshod Tursimatov
Provider nujen context a u menya netu context
IB Akhrorov
Где вам нужен context
IB Akhrorov
не правильно делаете
IB Akhrorov
Navigator.push должен быть в UI
IB Akhrorov
а не в бизнес логике
Dilshod Tursimatov
Какой совет вы бы дали?
IB Akhrorov
сделать throw и поймать FutureBuilder или return и поймать в UI или в Controller
Dilshod Tursimatov
А каждый запрос ?
Dilshod Tursimatov
а по моему это неправильно
Dilshod Tursimatov
У меня несколько поэтому я хочу использовать интерцептор
Radomir Epur
Ребят, а есть сейчас какая-нибудь БД для flutter web с api. То есть, задача будет лить данные из другого сервиса по api в БД сайта, скажем, каким-нибудь питоном через, например, psycopg2.
MisterCron
Добрый день) Сталкнулся с такой ситуацией: при запуске Flutter приложения(через macos)на iphone она вылетает, не запускается совсем(пробовал разные ios устройства). В эмуляторе приложение работает нормально, iOS и MacOS последней версии, кто сталкивался подскажите пожалуйста(
Andrey P
через xcode запусти
MisterCron
Так тоже делал, результат тот же(
les forest
а что в логе xcode сообщает?
les forest
пришли стэктрейс
Kirill Aparin
[
"Привет, я тут думаю использовать для бекенда Firebase, и вот не знаю, подойдёт ли он моим задачам, хочу сделать вот что: куча объектов, каждый с данными (текстовые данные, картинки, цифры, от которых зависит количество контейнеров, и вот в чём вопрос, картинки не всегда нужны будут и может быть такое что есть 5 контейнеров в каждом около 20 картинок, а может быть только 1 контейнер с 5 картинками) ",
{
"type": "bold",
"text": "Вопрос вот в чём насколько хорошо этой задачи подойдёт Firebase?"
},
""
]
Nazym
Всем привет! У меня тут такой случай может кто-нибудь сталкивался...Есть PageView, там 3 виджета. С главного виджета я свайпаю вправо, там открывается виджет с qr_code_scanner-ом. Как только перехожу на тот виджет контроллер qr scanner-a активируется. И когда я свайпаю назад на главный виджет приложение крашится с ошибкой EXC_BAD_ACCESS (code=1, address=0x48). Что означает memory exception. Как я поняла при свайпе контроллер qr-а не деактивируется и поэтому это ошибка. Как мне сделать чтобы метод dispose срабатывал ? Я пробовала добавить листнер но не помогло
Александр Мельников
Объекты с данными это конечно хорошо, а в контексте какой реализации? Нужно картинки отображать что-ли?)
Nazym
у меня был такой случай когда URL schema не добавила в Info.plist . Там какую ошибку выдает?
MisterCron
нет, даже когда стартовое приложение запускаю
Temurxon
у меня заказ на разработку приложения
Artem Fedotov
Отклоняй)))
Temurxon
нужен интернет магазин и я хотел бы использовать эффективную архитектуру
Максим
Ты попросил совет, тебе дали совет)
Kirill Aparin
Ну а что с ними ещё делать)), пользователь грузит свой контейнер с данными там и картинки и текст, и любой другой человек может в приложении отсканировать qr код, либо найти этот контейнер и полностью увидеть все данные и картинки
Temurxon
какую архитектуру выбрать?
Temurxon
и еще хороший state management
Temurxon
совет не помог )
Serge Shkurko
[
"сам не пробовал, но вот есть серия уроков по Clean Architecture бесплатно на youtube\n\n",
{
"type": "link",
"text": "https://www.youtube.com/playlist?list=PLB6lc7nQ1n4iYGE_khpXRdJkJEp9WOech"
},
""
]
Suo Mikoto
Есть ссылки на что-то толковое по наследованию компонентов и библиотек? Встала проблема в том что flutter_webview_plugin обрадатывает только парочку евентов клавиатуры. И LogicalKeyboardKey.enter не обрабатывает, вот думаю какбы его наследовать и расширить метод который обрабатывает события. Или может сразу ссылки на что-то подобное есть?
Kirill Aparin
Целесообразно ли использовать Firebase?
Gorohov Valeriy
А где он обрабатывает?
Gorohov Valeriy
Что-то беглым взглядом не нашел ничего.
Suo Mikoto
[
{
"type": "link",
"text": "https://github.com/fluttercommunity/flutter_webview_plugin/blob/master/android/src/main/java/com/flutter_webview_plugin/WebviewManager.java"
}
]
Gorohov Valeriy
Можешь сделать форк и ковырять в нем что угодно.
Suo Mikoto
Ну такая себе затея, я уже думал об этом, в дальнейшем мне туго придется с обновлением(
Suo Mikoto
Спасибо всем кто ответил
Gorohov Valeriy
Тебе не только переопределять нужно, на iOS вроде клавиатура не обрабатывается никак в либе.
atyourservice
Можно сделать пуллреквест
Gorohov Valeriy
[
"При обновах сливаешь к себе обнову, а возможные конфликты будут одинаково при переопределении и при форке. Только с форком они не прилетят неожиданно при ",
{
"type": "code",
"text": "packages get"
},
""
]
Suo Mikoto
Спасибо очень дельный совет.
Suo Mikoto
Он вродебы не во всех странах доступен, но в целом работает без отказано, можно настроить обработчик практически как тебе угодно, без проблем на своей строне можно настроить отправку сообщений конкретному пользователю и масс рассылку. Вообще штука простая и очень мощная.
admin
кто нибудь может стать ментором ? и обучить меня Flutter?
МихаИл
Ребят, вопрос есть по шаговая дока по подключению фаербэйс клоуд меседж в ерокту флатера?
Hellomik
народ хай никто не знает почему нет Revert анимации
Hellomik
[
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/53579"
}
]
Hellomik
а вот сам эффект
Hellomik
типо он выходит плавно, но когда исчезает очень резко
Вячеслав Кулинич
автовозобновляемые подписки это NonConsumable?
Suo Mikoto
На оф сайте флатера норм дока, по ней делал
МихаИл
Будь другом, брось в меня ссылкой, как в новичка)
Suo Mikoto
[
{
"type": "link",
"text": "https://pub.dev/packages/firebase_messaging"
}
]
Suo Mikoto
Вот по этому делал, все получилось без особых заморочек
МихаИл
ага спасибо, и еще глупый вопрос, подскажи как мне слать пуши , точннее где дока на гугле по этому вопросу? (слать пуши с моего бэкенда)
Suo Mikoto
Сёк ноут вроблб так проще будет, с телефона медленно писать
Павел
[
"Тоже начал задумываться о переводе бэка на что-то современное. Контент системы. Типа ",
{
"type": "link",
"text": "sanity.io"
},
" или netlify. С первого взгляда они слишком просты. Мне вот например нужен мощный rich text editor типа Ck или tinyMCE"
]
ilx13
Добрый вечер ребята. Как хранить массив данных во время работы приложения. Чтобы к нему был доступ со свех скринов. без БД и файлы есть ли еще варианты, идеи?
Evgenii Elchev
Переменная?)
ilx13
где обявить переменный? и как. на примере обычного Стринга. чтобы везде (на других скринах и дроверах) без проблем иметь доступ. и когда если свернув (не закрыть) и открыв обратно имел доступ к чтению и изменениям.
Roman Vasiliev
Bloc, singleton
Adv0cat
Ахахаха, звучит как матюги)
Evgenii Elchev
В глобале)
ilx13
можете дать ссылку на материал какую нибудь
Ivan Dembicki
Я бы рекомендовал использовать статические переменные, а чтобы данные не терялись между сессиями, можно использовать локальное хранилище.
ilx13
сессии? это когда они начнут работу и когда закончат? при свертывании?
Evgenii Elchev
Берёшь перед main функцией пишешь List = []; )
Ivan Dembicki
Да. Глянь SharedPrefences
ilx13
и обращаюсь к нему с всех скринов там добавляю очищаю? Благодарен Евгений.
ilx13
попробовал его, не то что нужно.
Ivan Dembicki
Ну это же жесть.
ilx13
вы про мою тупость)?
Evgenii Elchev
На самом деле нет. Чем принципиально это отличается от сиглтона?
Pavel Pimenov
М.б. лучше в provider или bloc? Чтобы нужные виджеты реактивно обновлялись при изменении
Evgenii Elchev
На каждую проблему своё решение. Что бы иметь глобальный массив, отлично подойдёт глобальный массив) если тебе нужно что то ещё, делай что то ещё)
Ivan Dembicki
[
"Нет, я вас не знаю, и допускаю, что во многих областях знаний вы намного умнее меня. \n\nПро реализацию. Я бы рекомендовал сделать вот так:\n\n",
{
"type": "pre",
"text": "class MyClass {\n static List myList = [\"foo\"];\n static String someGetMethod() => myList[0];\n}",
"language": ""
},
"\n\nГлобальные переменные настоятельно не рекомендую использовать. Это в общем долгий разговор, и где-то даже холиварный. \n\nЕсли кратко, то лучше сделать класс, в нем статическое поле, а также методы доступа/записи данных в массив. Сам массив даже лучше сделать приватным, все операции с ним только через эти методы. Но это не обязательно и ситуативно."
]
ilx13
я понял. отлично мне подойдет. Спасибо Иван.
Roman Vasiliev
и конструктор лучше сразу скрыть, от греха подальше
Ivan Dembicki
Я на 100% согласен с тем, что если нужен глобальный массив, то нужно делать глобальный массив. Правда тут встает вопрос определения потребности. За 20+ лет программирования у меня ни разу такой потребности не было.
Ivan Dembicki
В данном случае, поскольку предполагаются какие-то операции с массивом из разных мест, то эти операции лучше сгруппировать в одном месте — в классе. А чтобы класс не был завистливым, то и массив лучше держать в нем же.
Павел
Ок, даже если принять во внимание, что его возможностей достаточно (хотя конечно в разы меньше плагинов чем у tinyMCE), то внутри netlify его же нет. Как его туда интегрировать? Писать самому страницы админки? Тогда я и сам напишу SPA с большей гибкостью. Если конечно я правильно понимаю контент сервисы
john conor ?
насколько трудно установить флаттер? есть подводные?
Yerassyl Maikhanov
Да, надо что-то делать пока все скачивается. Я применял чай с печеньками советую и вам
john conor ?
а приложения 64 битными получаются?
john conor ?
пойду за печеньками
Дмитрий Щербаков
У нас карантин) я в Стиме сижу с понедельника ??
Timur Karimov
как поменять цвет скроллбара во флаттере? на ios же доступен светлый/темный скроллбар?
Radomir Epur
[
"Всем привет. Вот тогда вопрос интересный, чтобы не скучали:\nЗадача - прикрутить postgres к flutter web.\nИспользую ",
{
"type": "link",
"text": "https://pub.dev/packages/database"
},
" и ",
{
"type": "link",
"text": "https://pub.dev/packages/database_adapter_postgre"
},
".\nВ браузере в консоли данная ошибка выскакивает"
]
Radomir Epur
[
"В интернетах пишут что postgres не умеет в браузере. Вопрос: Как сделать так, чтобы код не интерпретировался в браузере(как бы это странно не звучало).\n\n",
{
"type": "code",
"text": "void main() {\n runApp(MyApp());\n}\n\nclass MyApp extends StatefulWidget {\n // This widget is the root of your application.\n @override\n _MyAppState createState() => _MyAppState();\n}\n\nclass _MyAppState extends State {\n\n Future dbConnect() async {\n print(\"function init\");\n final config = Postgre(\n host: secretData[\"dbHost\"],\n port: secretData[\"dbPort\"],\n user: secretData[\"dbLogin\"],\n password: secretData[\"dbPass\"],\n databaseName: secretData[\"dbName\"],\n );\n print(config.user);\n print(\"config created\");\n final SqlClient sqlClient = config.database().sqlClient;\n print(\"sql client created\");\n final result = await sqlClient.query('SELECT 1').toRows();\n print(\"result saved\");\n for (var row in result) {\n print(row);\n }\n }\n\n @override\n void initState() {\n dbConnect();\n super.initState();\n }\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n title: 'Flutter Demo',\n theme: ThemeData(\n primarySwatch: Colors.blue,\n ),\n home: HomePage(),\n );\n }\n}"
},
""
]
Nikita Domnitskii
не использовать dart:io
Dmitriy
Есть такой вот скрин, сделанный через stack(сверху лежит дот индикатор и кнопка), внутри PageView. Вопрос: Как расположить в колонке это изображение и текст, чтобы всегда вычислялись разные отступы в зависимости от размеров изображения и количества текста, вместе, где находится изображение, оно может иметь разный размер, но должно всегда центрироваться между верхним краем экрана и тестом, который может быть от 2-х до 4-х строк не перекрывая индикатор, который расположен сверху.
Artur
IntrinsicHeight кажись
Олжас Сулеймен
а не проще ли сделать промежуточный сервис который будет кидать жсон
Олжас Сулеймен
чем дергать бд сразу из приложения
Radomir Epur
Как раз в том то и дело что ни разу не проще. Почему ты считаешь что это проще?
Олжас Сулеймен
я как бекендщик мне проще
Олжас Сулеймен
тем более клиент в вебе делаете
Radomir Epur
Чем больше сервисов, тем больше вероятность что в произвольный момент что-то отвалится. Я же придерживаюсь во всем принципов KISS.
Олжас Сулеймен
я тоже ей следую написать простой json сервер, отдельно на дарте, общии клиент к нему с авторизацией, и в приложении дергать его
neikist
Пользователей пускать прямо в базу - моветон. Без контроля доступа, с возможностью исполнять произвольные sql запросы напрямую с клиента. Это только если что то чисто для себя делаешь сойдет
Radomir Epur
Это корпоративный сервис. Все свои)
Max
...что может пойти не так? )
Radomir Epur
Тем более у пользователей и так есть доступ к базе, потому что я пытаюсь подключиться не к базе, которая была создана под сайт, а к общей базе компании.
neikist
А по теме вопроса - браузеры насколько я знаю tcp сокеты не поддерживают в принципе. У постгри если не ошибаюсь свой рест есть, но это все равно не отменяет того что решение дико несекурно
neikist
Прямой доступ? Какой ужас.
Radomir Epur
Эмм, пользователи - аналитики. Они и так работают с БД. Что в этом ужасного?
neikist
Ну разве что так. Надеюсь бекапы делаются и проверяются регулярно ибо похерить базу проще простого можно невнимательному или слабошарящему пользователю
Radomir Epur
Не беспокойся, никто похерить базу не сможет. Вопрос доступов.
Radomir Epur
Все до такой степени секьюрно, что я могу в этой базе свою таблицу сделать с данными, которая будет регулярно обновляться, и к ней смогу обращаться только я(я уже молчу об изменениях и дропе таблицы.)
Sergey Hottabych
Подскажите, как получить sha-1 для Firebase? Keytool из терминала не работает (пишет "Имя "keytool" не распознано как имя командлета, функции, файла сценария или выполняемой программы") Пробовал 2-й способ, в Android Studio открыть проект, но в проекте на Flutter нет вкладки Gradle нигде.
Dmitriy Orteney
попробуй именно папку android открыть через AS
Sergey Hottabych
Спасибо, это решило мою проблему :) Дальше все просто Gradle -> Tasks -> запустить SigningReport, и он выдает заветный отпечаток.
Dmitriy
Кто знает можно ли как-то подружить Container cо свойством image и SvgPicture.assets? Или есть ли способ наложить градиент на svg-шку?
Gorohov Valeriy
[
{
"type": "link",
"text": "https://www.youtube.com/watch?v=7sUL66pTQ7Q"
}
]
Sergey Salnikov
повозись с ShaderMask
Dmitriy
Спасибо попробую повозиться
Sergey Salnikov
[
"я разбирался на примере\n",
{
"type": "email",
"text": "git@github.com"
},
":oleeja/FlutterGradientExample.git"
]
Dmitriy
Спасибо за пример
Dmitriy
Насколько я понял там градиент накладывается во внутрь изображения. Мне нужно, чтобы градиент был в качестве фона и под ним изображение. Но контейнер с свг не работает
Sergey Salnikov
[
"Изображение под фоном?\nФон - это второй план\n\nПосмотрит\n",
{
"type": "pre",
"text": "Container(BoxDecoradion(gradient))",
"language": ""
},
""
]
Dmitriy
Доброго времени суток, уважаемые доны, скажите пожалуйста есть литература по Dart ^2.0?
Roman Vasiliev
Документация на сайте
Dmitriy Orteney
[
"Такое вроде только с аргументами помеченными как ",
{
"type": "code",
"text": "@required"
},
" работает (з.ы. в vscode так)"
]
Dagba
но как быть если не обяз параметр
Dagba
очень много времени трачу на печетание и поиск параметра
Dmitriy Orteney
Ну с другой стороны, я бы испугался, если бы написал какой-нибудь Text, а мне вываливается портянка из 13 аргументов)
Igor Kusoff
cmd + J на имени класса показывает его параметры
Sergey Salnikov
cmd + p все аргументы метода или конструктора
Ленар Махмутов
Подскажите плиз по файрбейз и флаттер, токены постоянные? Или обновляются? и можно. ли как то видеть момент обновления токена
Dmitriy Orteney
[
"Например есть ",
{
"type": "code",
"text": "FirebaseMessaging().onTokenRefresh\n\n"
},
"Может меняться:\nThe registration token may change when:\n\n• The app deletes Instance ID\n• The app is restored on a new device\n• The user uninstalls/reinstall the app\n• The user clears app data.\n\n© ",
{
"type": "link",
"text": "https://firebase.google.com/docs/cloud-messaging/android/client#sample-register"
},
""
]
Ленар Махмутов
спс а то меня напугали что токен меняется
Dmitriy
Да фон на втором плане, но в качестве image для BoxDecoration или ShapeDecoration нельзя использовать SvgPicture.asset так-как он не наследуется от ImageProvider
Sergey Salnikov
так и не ясно что ты хочешь получить ни из первого сообщения, ни из последующих
Eugene
[
"Всем привет, кто какой плагин использует для определения геолокации, начал использовать этот ",
{
"type": "link",
"text": "https://pub.dev/packages/location"
},
", но он как-то странно работает, запрос ",
{
"type": "pre",
"text": "getLocation()",
"language": ""
},
" выполняется минут 5-10, причём если не дождаться выполнения и перезапустить приложение, то в догонку сначала приходит ответ, а потом уже запускается приложение"
]
Eugene
[
"Тоже самое с подпиской на ",
{
"type": "code",
"text": "onLocationChanged"
},
""
]
Dmitriy
[
{
"type": "link",
"text": "https://t.me/rudart/172340"
},
" Получить нужно вот такое. Этот экран уже реализован, хотелось заменить png на свг в качестве фона. Там картинка в виде облаков"
]
Aleksander Barsukov
Привет всем! Такой вопрос: есть List, в котором записаны значения в виде объекта с полями key: value. При печати они выводятся в очень хаотичном порядке. Есть мысли, как можно упорядочить список по полю объекта?
Eugene
речь наверное про Map
Dmitriy Orteney
[
{
"type": "link",
"text": "https://api.flutter.dev/flutter/dart-core/List/sort.html"
}
]
Aleksander Barsukov
Эм. Нет. Лист получен из снапшота cloud firestore.
Eugene
[
"А, не так прочёл, ",
{
"type": "code",
"text": "sort()"
},
" поможет"
]
Aleksander Barsukov
Смотрел. Не понимаю, как тут упорядочить List с объектами внутри. Sort() не помогает.
Kirill Aparin
[
"Привет, вопрос такой, я хочу на устройство сохранять объекты, которые содержат картинки, текста и т.д. ",
{
"type": "bold",
"text": "Что выбрать SQFlite или path_provider?"
},
""
]
Max
Нужно написать функцию - компаратор
Eugene
[
{
"type": "code",
"text": "List().sort((a,b)=>a.value.compareTo(b.value));"
}
]
Aleksander Barsukov
Спасибо
Aleksander Barsukov
Спасибо!
Ленар Махмутов
Подскажите по нотификациямиз файрбейза еще один момент, у меня на одном телефоне нотификации приходят нормально со звуком все хорошо, на сяоми звука нет, можно вообще как то свой звук на нотификаии поставить? вопрос именно профоновый режим
Kirill Aparin
Что думаете?
Eugene
Там возможно дело в настройках уведомлений при отправке, в клауд функциях. Там очень запутанные настройки
Dmitriy Orteney
Там скорее "фишки" сяоми х) у них есть кастомные настройки уведомлений для приложений
Ленар Махмутов
а нельзя как то прикрутить свой звук?
Павел
зачем усложнять? Сделал file_storage сервис-класс
|