Программирование : Dart & Flutter по-русски
Andrew Ka
Большое спасибо! :)
Shakhzod
[
"всем привет! листенер на TextEditingController не работает\n\n",
{
"type": "code",
"text": "_controller.addListener(() {\n print('test');\n});"
},
""
]
Almas Tanayev
Полный код покажи
Вадим
[
"Кто может пояснить за версии плагинов в pubspec.yaml?\nНапример ",
{
"type": "code",
"text": "shared_preferences: ^0.5.7"
},
", после команды ",
{
"type": "code",
"text": "flutter pub upgrade"
},
" какая версия плагина будет стоять?"
]
Igor Kulakov
Будет стоять последняя не ломающая версия. Тоесть первая цифра "0" будет оставаться неизменной, а вторые две будут обновляться до последней версии.
Вадим
Можно как-то узнать, какая текущая версия?
Andrey Tsvetkov
[
{
"type": "link",
"text": "https://pub.dev/packages/shared_preferences"
}
]
Вадим
Текущая у меня в проекте*
Igor Kulakov
В Андроид студии можно открыть папку со всеми установленными плагинами и там посмотреть версию
Vyacheslav
[
"Всем привет! \nСобираю в codemagic дебаг билд apk и на физическом устройстве ловлю ошибку \n",
{
"type": "pre",
"text": "PlatformException (PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null))\n",
"language": ""
},
"второй день сижу не пойму причины. Ключи в файрбейс прописал (дебажные). OAuth страничку заполнил по мануалу, адрес поддержки указал, SignIn способ авторизации включил...\nЧто еще можно проверить? \nНа симуляторе андроид и айос вход работает как надо (видео я показывал)"
]
Radomir Epur
[
"В \\android\\app\\src\\main\\AndroidManifest.xml прописал пермишен на доступ к сети?\n",
{
"type": "code",
"text": ""
},
""
]
Vyacheslav
хотя нет, прописано
Сергей
Подскажите как синхронизировать работу с бд? Нужно, чтобы если кто то работает с бд, все остальные ждали. Например в одном месте в транзакции я запрашиваю объект из бд и прибавляю к его параметру число и обновляю, а в другом месте тоже самое происходит и получается все отработает не корректно, так как во втором месте я могу запросить старый объект
Pavel Vasilenko
Нужно оборачивать операции в транзакции
Сергей
Во флаттер две транзакции одновремнно не могут быть запущены?
Pavel Vasilenko
Нет. Вообще тут следовало бы уточнить, какая база имеется ввиду
????? ILyos >
[
"привет!\nиспользую ",
{
"type": "code",
"text": "ListView.builder(scrollDirection: Axis.vertical,)"
},
" можно ли одно временно использовать оба(vertical, horizontal) ??\nдля маленьких экранов"
]
Vladimir Avramov
Это очень плохой вариант организации работы с БД. Если хотите организовать подобное, то смотрите в сторону уровней изоляции транзакций sqlite. Но классические оптимистическая/пессимистическая блокировки вам подойдут лучше. А вообще, этот вопрос никак не по теме чатика. Лучше его задать в конфе sqlite. UPD: И задать более развернуто, что вы там такое хотите хранить и как организовали физ. модель
admin
можно ли во flutter добавить вход через Yandex?
DVS (Read The F.ng Manual) Studio (NoHello)
[
"yandex_sign | Flutter Package\n",
{
"type": "link",
"text": "https://pub.dev/packages/yandex_sign"
}
]
admin
разве это не карты?
DVS (Read The F.ng Manual) Studio (NoHello)
если и карты, то можно поломать сам плагин и сделать наподобие него свой
Davron Asrorov
Кто нибудь сталкивался с тем что moor не работал у IOS 11 и ниже
admin
в вебе есть возможность сделать авторизации через редирект с токеном от того или иного сервиса, можно ли провернуть такое на flutter?
Igor Kulakov
через кнопки «sign in with google» точно можно и через фейсбук. Со всеми редиректами
admin
так у flutter нет системы роутинга
admin
а в этих сервиса в вебе нужно передавать callback URL
admin
авторизации через соц сети
admin
есть веб, там можно войти через 7 разных соц сетей и надо бы как то это сделать если можно на naitve
Alexander
веб понятно, не вижу проблемы, берешь делаешь токен только откуда будет у тебя
admin
он приходит на callback URL
admin
это нужно в настройках самого api сервиса указывать
Alexander
опиши логику с запуска приложения
Sergey Bubnov
Всем привет, как вы профилируете http запросы для flutter desktop? Попробовал Flutter Setho, но что-то оно не заработало. Хочется видеть запросы и ответы (body)
admin
в вебе 1. клик на ссылку 2. вводишь свои данные в гугле например 3. Всё ок, гугл отправляет тебя на URL который ты указал в параметрах и передаёт туда токен 5. берёшь у себя этот токен и делаешь запрос к гуглу 6. гугл даёт тебе информацию о пользователе который там залогинен 7. делаешь уже что хочешь с этой информацией
admin
в flutter нет системы роутинга потому как такое там делается я не знаю
DK
главное чтобы фронт отправил тебя к гуглу, а гугл всё слать будет на бэкэнд сохраняя токен
admin
возможно это сработает
Alexander
[
"ты не описал в рамках приложения что ты хочешь делать если конечно не браузер??, почитай про авторизацию, а так же есть вагон готовых решений на ",
{
"type": "link",
"text": "pub.dev"
},
""
]
admin
авторизация через соц сеть
admin
Google Facebook если только
Alexander
если есть учетка os тебе отдаст токен
Alexander
почитай про механизмы авторизаций
roi peker
[
{
"type": "mention",
"text": "@Belokotov"
},
" am I welcome? ??"
]
Andrew Ka
[
{
"type": "link",
"text": "https://youtu.be/-fwhKkJ61yQ"
}
]
Andrew Ka
[
{
"type": "link",
"text": "https://youtu.be/m8u-HRzEtKk"
}
]
Ivan
не подскажете как эти точки называются обычно в чартах?
Ivan
просто чтобы загуглить
DVS (Read The F.ng Manual) Studio (NoHello)
showBottomSheet( ... isScrollControlled:true, )
DVS (Read The F.ng Manual) Studio (NoHello)
а если там длинный список будет, то внутрь в идеале что то типа DraggableScrollableSheet —ListView.builder( —controller (из билдера DSS) —... —)
mark
Но оно разве не будет отображаться как диалог? Мне нужно что бы и с серым фоном можно было взаимодействовать
DVS (Read The F.ng Manual) Studio (NoHello)
[
"а. тогда можно посмотреть на плагины типа ",
{
"type": "code",
"text": "stopper"
},
""
]
Andrew Ka
[
{
"type": "link",
"text": "https://youtu.be/mFLkqrLEods"
}
]
Sergey Hottabych
Обязательно ли в dispose отменять подписки на стримы? Будет ли утечка памяти, если этого не сделать, или это просто исторически так сложилось? Линтер никаких варнингов не показывает на этот счет.
Sergey Hottabych
Фазер, на которым html5-игры пишут? И как он тебе?
Sergey Hottabych
Values? Points?
Saidkamol
ребят не подскажите как правильно конвертировать из stateless в Satateful ?
Daniil Kolyasnikov
Просто сделай hot restart
Saidkamol
и даже полный тоже попробовал
Daniil Kolyasnikov
А можно больше подробностей об ошибке и контексте ситуации ?
Saidkamol
я там внутри createState должен throwexception оставить?
admin
А через refactor пробовал?
Saidkamol
все уже решил проблему
Saidkamol
с конвертацией проблем не было оказ
Daniil Kolyasnikov
что же ты там продаешь за 350 евро в месяц
Sergey Hottabych
+++ Будешь раза в 4 быстрее делать и меньше кода.
Тима Егембердиев
Или перейти на Котлин и тоже меньше кода будет
Тима Егембердиев
Лучше в Котлин иди
tdesc
если планируешь закончить разработку вместе с Андроидом то не стоит.
Andrew Ka
[
{
"type": "link",
"text": "https://youtu.be/jFmIxWH3Xq4"
}
]
Yerassyl Maikhanov
ребята
Yerassyl Maikhanov
а как создавать что то на подобии этого
Yerassyl Maikhanov
[
{
"type": "link",
"text": "https://rive.app/a/mats114/files/flare/log-in/preview"
}
]
Yerassyl Maikhanov
я не совсем понимаю как такую анимацию сделать
Yerassyl Maikhanov
ok почитаю, спасибо
Yerassyl Maikhanov
спасибо
Almas Tanayev
канал FIDEV, чекни если есть время просмотреть 2ух часовые видео)
Алдияр Сахан
[
"Всем привет\n",
{
"type": "pre",
"text": "return Container(\n margin: EdgeInsets.symmetric(horizontal: 10, vertical: 5),\n height: 110,\n decoration: BoxDecoration(\n color: Colors.white,\n borderRadius: BorderRadius.circular(15),\n boxShadow: [\n BoxShadow(\n offset: Offset(0, 1),\n blurRadius: 5,\n color: Color(0xFF12153D).withOpacity(0.2),\n ),\n ],\n ),\n child: Container(\n margin: EdgeInsets.all(10),\n decoration: BoxDecoration(\n borderRadius: BorderRadius.circular(15),\n ),\n child: Row(\n children: [\n //Image\n Container(\n child: Image.asset(\n \"assets/images/1.jpg\",\n height: 100,\n width: 100,\n fit: BoxFit.cover,\n ),\n ),\n //Desc\n Container(\n margin: EdgeInsets.only(left: 10),\n child: Column(\n children: [\n //title\n Container(\n alignment: Alignment.centerLeft,\n margin: EdgeInsets.only(bottom: 5),\n child: Text(\n \"${article.title}\",\n style:\n TextStyle(fontSize: 20, fontWeight: FontWeight.bold),\n textAlign: TextAlign.left,\n ),\n ),\n //meta\n Container(\n child: Row(\n mainAxisAlignment: MainAxisAlignment.spaceEvenly,\n children: [\n //Author\n Container(\n child: Row(\n children: [\n //icon\n Icon(Icons.person, size: 16, color: Colors.black54,),\n SizedBox(width: 5,),\n //Author\n Text(userName, style: TextStyle(color: Colors.black54, fontWeight: FontWeight.w500),)\n ],\n ),\n ),\n// SizedBox(width: 15,),\n //Category\n Container(\n child: Row(\n children: [\n //icon\n Icon(Icons.category,size: 16, color: Colors.black54,),\n SizedBox(width: 5,),\n //Author\n Text(article.category)\n ],\n ),\n ),\n// SizedBox(width: 15,),\n //Category\n Container(\n child: Row(\n children: [\n //icon\n Icon(Icons.access_time,size: 16, color: Colors.black54,),\n SizedBox(width: 5,),\n //Author\n Text(article.created)\n ],\n ),\n ),\n //TimeCreated\n ],\n ),\n )\n ],\n ),\n )\n ],\n ),\n ),\n );",
"language": ""
},
"\nТут textAlign: TextAlign.left, не работет. как можно решать?"
]
Алдияр Сахан
внутри Container alingmment тоже
DK
это в продакшен уедет?) интерес, для какой конторы?)
Алдияр Сахан
meat House))
Алдияр Сахан
коммерческий))
Алдияр Сахан
этот новости должен быть))
Yerassyl Maikhanov
Может тебе в колонке надо выровнять по левому краю, тк текст изначально по левому но колонка его в центр ставит
Алдияр Сахан
meta данный внутри ROw mainAxisAlignment: MainAxisAlignment.spaceEvenly тоже не сработал))
Алдияр Сахан
ты имеешь виду самый главный Column?
Алдияр Сахан
Column( crossAxisAlignment: CrossAxisAlignment.start, так решил
Shakhzod
всем привет! при нажатии кнопки, я вызываю showBottomSheet с контекстом, но флаттер ругается что не может найти Scaffold. в WidgetTree он есть и всё нормально. Ошибка: No Scaffold widget found.
Shakhzod
или Scaffold должен идти сразу после MaterialApp ?
Алдияр Сахан
Как можно дать доступ?
Sergey Hottabych
Да. Скаффолд - это экран приложения.
Lermont
Привет! Пытаюсь разобраться в том, как делать bloc/provider, и мне кажется, что я делаю что-то не так) Есть блок, в котором несколько стримов, по ним хочу рисовать виджет. И что-то мне кажется, что build виджета будет очень громоздким. Как правильно это делать? С одним стримом структура примерно такая
Yerassyl Maikhanov
да я про это говорил
Алдияр Сахан
И еще speceBetwene тоже так неработаеть))
Yerassyl Maikhanov
spaceBetween в колонке или строке?
Yerassyl Maikhanov
в колонке если главный то оно по высоте отступы делает
Yerassyl Maikhanov
margin это отступы по краям снаружи виджета
Алдияр Сахан
тут у меня Row(row,row,row)
Алдияр Сахан
но я сделал у каждого SizedBox
Yerassyl Maikhanov
это тот чел с Flutter Europe? спасибо за наводку на его канал ))
Andrew Ka
[
{
"type": "link",
"text": "https://youtu.be/RWp0f959H7I"
}
]
Sergey Hottabych
BlocLibrary от felangel? Или именно Bloc + Provider?
Lermont
Просто Provider и реализация паттерна bloc на стримах из rxdart
Lermont
Вообще, мне, как человеку из другого мира (Qt), хочется застрелиться от обилия вариантов решения одной и той де задачи. В интернетах тучи гайдов, использующих некоторые библиотеки. В каждлм гайде немного отдельный набор либин. В половине гайдов устаревшие версии =)
Sergey Hottabych
Да, тут одних блоков десять видов с гаком )
Evgenii Elchev
Человек который пишет на плюсах, говорит об обилии вариантов решения задачи)))
Sergey Hottabych
Ну это ты лисичку спрашивай. Она любит блоки.
Lermont
В моем случае "мыши плакали, кололись, но продолжали есть кактус" =)
Lermont
Ну у меня именно для блока никакой либины не используется.
Lermont
То есть более общий вопрос — как впихнуть 4 стрима одного класса в билд другого правильно?
Evgenii Elchev
Как надо так и впихивий)
Max
Склеить в общий стрим и отдать в стримбилдер?
Evgenii Elchev
Вообще в блоке должен быть один стрим, ну так понятнее как то, но в целом это не принципиально
Lermont
У меня опыта с флаттером три дня месяц назад и несколько часов сегодня =) Вот не понимаю я пока
Lermont
Разные типы в стриме нормально?
Evgenii Elchev
Так возьми готовую либу тогда)
Evgenii Elchev
С общим предком
Lermont
Тут начинается проблема тучи либ. Не понятно, что брать)
Evgenii Elchev
Хотя тут у всех классов общий предок
Lermont
И кастить по месту? Омерзительно ж
Max
Скорее всего, тебе нужны данные всех четырёх одновременно для билда? Тогда нарисуй для них обёртку
Evgenii Elchev
Бери от фалангела, там дока хорошая, примеров много
Lermont
Они в разное время появляются все. То есть я могу трансофмом сводить в общую структуру, но мне это кажется неправильным
Max
Но почему, если для визуализации тебе нужна общая структура?
Nikita Domnitskii
Можно взять фризд какой-нибудь и через недопатернматчинг это делать
Lermont
Ситуация такая — я опрашиваю девайс. Некоторые запросы надо делать часто, некоторые редко.
Evgenii Elchev
Если у тебя UI элемент зависит от всех 4 ех то сводить как раз правильно
Evgenii Elchev
Если не зависит, зачем вообще их тогда сводить?
Max
Перерисовка нужна на все?
Lermont
Для каждого куска нужна. Одновременно не нужно
Evgenii Elchev
Это все равно будет тайп кастинг
Max
Тогда твои куски - отдельные виджеты со своими стрим-билдерами и стримами
Evgenii Elchev
Я кстати фриз пробую, с ним почти так же неудобно как без него((
Lermont
Один класс имеет конфиг девайса, держит http клиент, по таймеру руллит там чем-то. Удобно.
Nikita Domnitskii
Ну хз, без него прям совсем печально
Max
Опционально. Это уже как тебе удобнее
Lermont
А разве не будет 4 инстанса блока от этого?
Lermont
у каждогокласса свой
Nikita Domnitskii
Ну так в провайдер его сунь
Nikita Domnitskii
И консьюмь во всех 4 стримбилдерах
Evgenii Elchev
Ну да, потому я продолжаю его использовать
Lermont
Типа так оно лишний раз не заинстанцируется?
Nikita Domnitskii
Не, он в дерево один раз кладётся
Nikita Domnitskii
А или стой
Nikita Domnitskii
Тебе 2 провайдера на 1 блок не нужно
Nikita Domnitskii
Запихни провайдер туда где до него могут дотянуться все консьюмеры
Lermont
Типа синглетон сбацать?
Nikita Domnitskii
Ну ты же видешь какая у тебя структура выходит?
Nikita Domnitskii
Сделай так
Nikita Domnitskii
Провайдер Консьюмер1 Стримбилдер1 Консьюмер2 Стримбилдер2 ...
Lermont
Я туплю, как два консьюмера в одни провайдер вставить?
Lermont
Иначе бы уже сделал так, наверное
Verbovenko Vladimir
Можно как то в http.get впихнуть body запросы?
Lermont
Это я понял =) У провайдера child один же только
Nikita Domnitskii
Покажи чо хочешь сделать
Nikita Domnitskii
А тайлы у тебя как расположены?
Nikita Domnitskii
В колонке?
Lermont
да, children Column-а
George Wiseman
Походу осваивая Dart/Flutter после RN столкнулся с непониманием: Если кратко - структура примерно такая. Корректно ли вот так писать? В React я для дергания императивных методов компонента использовал бы ref на компонент, а тут - непонятно как добраться до методов.
Nikita Domnitskii
Провайдер Билдер Колонка Тайлы
Lermont
Разумно. Что-то я дурак =)
Nikita Domnitskii
Билдер потому что контекст один и тот же и консьюмеры не найдут провайдер без него
Sergey Hottabych
Да в принципе корректно Только return Column Ты прокидываешь ссылки на методы в виджеты. А уже внутри этих виджетов (А и В) принимаешь метод (как параметр Function) и дергаешь его.
Sergey Hottabych
В провайдер надо корень приложения оборачивать (MyApp или MaterialApp). А с билдером - это вводить лишнюю вложенность. Не скажу, что прям костыль. Это окей, но не идеально.
Nikita Domnitskii
В провайдер нужно оборачивать то что нужно, а не весь апп
Nikita Domnitskii
Если бы ему нужен был доступ с разных экранов, то да
Sergey Hottabych
Ну пускай экран обернет тогда.
Lermont
Кстати, вероятно, это надо будет потом пробросить на другой уровень (подсчет подключенных девайсов в списке). Я ж смогу по списку стримов пройти?
Алдияр Сахан
[
"Как можно оставит пустой пространство SizedBox() с верху ListView\n",
{
"type": "pre",
"text": " return Scaffold(\n appBar: AppBar(\n backgroundColor: mainColor,\n// elevation: 0.1,\n title: Text(\n 'Жа?алы?тар',\n style: TextStyle(fontSize: 22),\n ),\n ),\n body: ListView.builder(\n itemBuilder: (BuildContext context, int index) {\n Feed feed = feeds[index];\n return _build(context, feed);\n },\n itemCount: feeds.length),\n );",
"language": ""
},
""
]
Sergey Hottabych
body: Column( children: [ SizedBox(), ListView... ]),
George Wiseman
Тут сомнения в чем - в случае если происходит заново сборка дерева виджетов, не будет ситуации что я дергаю методы некорректных экземпляров?
Sergey Hottabych
А если ListView в Container с фикс. высотой обернуть?
Fearless Cry
ListView оберни в Expanded
Sergey Hottabych
вроде не должно...
George Wiseman
Кстати - а как такой bottom bar делать? Он анимированный?
Алдияр Сахан
[
{
"type": "link",
"text": "https://pub.dev/packages/curved_navigation_bar"
}
]
Andrian Druk
Ребят кто скалкивался отпишите, решил установить попробовать Flutter и не могу запустить ни эмулятор и реальный девайс
Павел Середа
накатите xcode
Andrian Druk
на нативном Android все ок
Slava Slavajun
Всем привет, Кто нибудь скиньте рабочий образ Mac os для virtualbox
DK
найти не проблема ведь
DK
к каждой интструкции линк на облако
DK
надо к себе сохранить в облаке и с нормальной скоростью скачать
Ivan
могу скинуть только 10.15.3, который сам юзаю
admin
Сильно тормозит в virtual box?
Ivan
конечно) на то это и виртуалка
|