Программирование : Dart & Flutter по-русски
Dart & Flutter по-русски
Программирование : Dart & Flutter по-русски
Mentoster
Можно конвертировать json в дарт классы при помощи дополнения vs code
Mentoster
если я правильно понял, что ты хочешь
Adel Gilyazeev
А где можно найти схемы как устроены бд, и как реализуются транзакции? Как их записывать на диск, как считывать данные, сортировать, получать и ТД... Большие данные...
Adel Gilyazeev
Ну точнее на каком нибудь абстрактном языке программирования
Adel Gilyazeev
А не просто схемы, а то схемы я видел
Yakov K.
А что именно интересует? Там же несложно всё
Yakov K.
Можете свой драйвер сделать на изоляте с очередью для JSON-бдшки если хотите разобраться как на низком уровне устроено
Вася
На абстрактном не знаю, проще смотреть код реальных проектов, на реальном языке. А что по поводу устройства, посмотри в сторону mvcc
Adel Gilyazeev
Примеры какие данные, как лучше организовывать хранение, как создавать выборку данных, как их подгружать с диска, как упаковать...
Yakov K.
Под несложно имел ввиду NoSQL :))
Yakov K.
[
"У sembast довольно читаемые сорсы: ",
{
"type": "link",
"text": "github.com/tekartik/sembast.dart"
},
""
]
Adel Gilyazeev
Да я смотрел как хайвы устроены, я решил каждую запись в таблице хранить в бинарном виде (у меня модель конвертируется), а таблицу для начала использовать линейную, то есть данные подряд записаны, без всякой адресной индексации... У каждого уникальный айди начиная с нуля... Для малого количества данных мне этого достаточно, покачто
Adel Gilyazeev
Следующий шаг это вот будет отдельно сделать таблицу где записаны ключи и офсет данных в бинарнике, и в памяти всегда будем хранить все ключи и некоторое количество данных из таблицы
Adel Gilyazeev
Обновление записи будет считай наращивать бинарник, и обновлять оффсет в индексе
Adel Gilyazeev
При этом при обновлении данных если старая запись больше чем новая, то прям поверх старой можно будет перезаписать в бинарнике, а при упоковке создать клон таблицы и из неё сформировать новый бинарник где данные будут упорядочены, без устаревших данных
Adel Gilyazeev
Вот, что нить такое где найти можно
Adel Gilyazeev
Или как бд обрабатывают селекты, джоинты, и всё такое
Сергей
Отличная тема для дискуссии
Maxim
Но зачем? Когда можно взять что то готовое, что поймут другие разработчики)
Пашка
можно, а что именно? почему для архитектуры создан отдельный чатик, мб потому что там совсем не все очевидно?
Роман Аблаев
где он создан, можно ссылку?
MiT
У setState ещё одна проблема есть. Он обновляет весь виджет и все вложенные в него, что может бить по скорости отрисовки. По этому нужно обновлять виджет только там где обновились данные. Вторая проблема это смешивание кода логики и ui. Нужно как-то отделять их. По поводу "больше классов сложнее читать код", я с вами не согласен. "Трудное вхождение в профессию". Это в любом языке есть. И да, нужно не знать, а понимать. И не архитектуру, а паттерны. По поводу обращения на SO, это будет всегда, даже с vanilla (как отвечающий говорю) Ну и на последок, все эти "стейт менеджеры" использую setState у себя внутри.
Пашка
[
{
"type": "link",
"text": "https://t.me/flutter_architecture"
}
]
Роман Аблаев
интересная группа, меня туда не пускают, выкидывает
Пашка
так там защита от ботов
MiT
Слишком зелёный ещё для неё
Пашка
тебе же бот пишет реши пример
Роман Аблаев
не обратил внимание
Роман Аблаев
надо было арифметическую задачку решить)
Роман Аблаев
Там везде лиса)мега звезда группы)
Nikolay Plotnikov
Подскажите пожалуйста. У нас встал вопрос при разработке сервера, API для мобил. Как делать авторизацию. Разрабы говорят JWT имеет много минусов. И типа на сессиях гуд. Но как мобилы будут работать с сессиями на куках, не понятно.
MiT
Ну и куки в мобилке тоже есть…
Nikolay Plotnikov
А что это значит? типа так безопаснее?
Nikolay Plotnikov
про JWT я читал, примерно понимаю
Roman Suleymanov
Если домен один, то через сессию нет проблем, куки есть
MiT
[
{
"type": "link",
"text": "https://flutter.dev/docs/cookbook/networking/authenticated-requests"
}
]
MiT
JWT это вообще по сути json, там может быть что угодно
Maxim
jwt: refresh и access токен
Егор Шепелев
На М1 из икскода можно запустить отладку на десктопе айфоновского приложения. Удалось ли кому так же запустить через vscode?
Roman Suleymanov
Если кроссдоменная авторизация, тут начинаются танцы, придется jwt или что-то ещё
Alexandr Drobyshev
уже 9лет на иос/андроид работает прила на куках)
Anton Zheltov
[
"У нас jwt, токен рефрешим и все. Какие минусы называют интересно? ",
{
"type": "mention",
"text": "@NickPlotnikov"
},
""
]
Nikolay Plotnikov
[
{
"type": "link",
"text": "https://www.youtube.com/watch?v=601CnGGp_MU"
}
]
Nikolay Plotnikov
Тыкнули этим видео
Andrew Shalaev
Имеется в виду наверное сложности с отзывом jwt токенов.
MiT
Хз, тут все от реализации зависит…
Bolat
можете подсказать, я выделил часть кода, который работает при нажатии, но когда на следующей старнице делаю то же действие уже не работает(
Daniil Kostin
если молчит, значит на той странице реакции на новый стейт блока нету а вообще есть дебаггер, ставишь брикпоинт в блоке и все ищется легко
Bolat
А Blocprovider.value разве не должен помочь, чтоб блок был в контексте?
***Eegor Balint***
[
"доброго всем дня!\nНе могу понять почему ``",
{
"type": "bold",
"text": "color:Colors.black,"
},
"`` выдает ошибку\n\n`` child:Column(\n crossAxisAlignment: CrossAxisAlignment.stretch,\n children: [\n Text('Add new task',\n textAlign: ",
{
"type": "link",
"text": "TextAlign.center"
},
",\n style: TextStyle(\n fontSize: 30.0,\n fontWeight: FontWeight.w600,\n color: Colors.lightBlueAccent,\n ),\n ),\n TextField(\n autofocus: true,\n textAlign: ",
{
"type": "link",
"text": "TextAlign.center"
},
",\n ),\n TextButton(\n child:\n Text(\n 'ADD',\n style: TextStyle(\n color: Colors.lightBlueAccent,\n fontWeight: FontWeight.w600,\n ),\n ),\n ",
{
"type": "italic",
"text": " color: Colors.black,\n"
},
" onPressed: (){\n //Add our task to the list\n },\n ),\n ],\n ),``"
]
Семён undefined
у кого нибудь есть предложения, как реализовать на флаттере поддержку дополнений в приложении? ну то есть догружать код с рефлексией было бы попроще конечно, но без неё приходит на ум только тупой парсер
Andrew Shalaev
[
{
"type": "link",
"text": "https://habr.com/ru/company/acribia/blog/457090/"
}
]
Daniil Kostin
Вся проблема тут сводится к тому, что сервер блеклистов упал. Ни разу не доходил до такого масштаба, чтоб его в отдельный сервер выводить. Все те проблемы можно и к oAuth отнести. Я использую JWT как обычный токен + рефреш, тут может быть проблема безопасности, что они не разъединены, но для меня это не критично, у нас не банк, это можно обойти привязкой токена к id усройства и сбрасывать его при новом входе. В плане реализации JWT проще.
Andrew Shalaev
Короче, аргументируйте в пользу jwt тем, что если нормально закодить, то проблем особых нет. Даже firebase использует jwt ?? это удобнее, чем мучится с куками на мобильном приложении
Nikolay Plotnikov
Спасибо.
Alexandr Drobyshev
я юзаю jwt но вот ща привызывал прилу к беку который с 2012 года крутиться и я не лезу туда, там прросто сайт, я юаз dio ни каких проблем с кукой нет вроде)
Adel Gilyazeev
Люди через изолят запускают произвольный код... Погугли "dart Eval"
Семён undefined
безопасно?
Семён undefined
ну через изолят можно будет изменить что-то в приложении?
Семён undefined
вред какой-то нанести например
Adel Gilyazeev
Ну файлы по перезаписывать
Adel Gilyazeev
А так изоляты между собой только через порт могут взаимодействовать
Семён undefined
яснопонятно
Adel Gilyazeev
Eval это всегда не безопасно))
MiT
Как медуза сделали если только… По другому вроде никак не получиться
Семён undefined
у них вообще вебвью, мне не это нужно
Семён undefined
мне нужно плагины чтобы можно было добавлять
Andrew Shalaev
Не безопасно как-то...я бы лучше через remote config включал-выключал фичи
Семён undefined
да вы не поняли
Семён undefined
это сторонние плагины будут
MiT
У них часть на вебвью. А другая часть через динамические виджеты. Т.е. Бак формирует каркас виджетов, и отправлять его с данными, а фонт это все собирает
MiT
Как понять твое «плагины»?
Семён undefined
в вс коде плагины
Семён undefined
скачиваются, внедряются, добавляется новый функционал в редакторе
Семён undefined
мне нужно так же на флаттере
Andrew Shalaev
Стороние - это существующие уже гдето сниппеты кода? или которые предстоит еще написать?
Даниил Левицкий
Возьми какой-нибудь плагин для запуска JS скриптов, да и поставляй их
Даниил Левицкий
просто протоколы для общения наладь
Даниил Левицкий
Если хочется на дарте писать, то просто конвертируй dart -> js
Nikolay Korolev
всем привет, ктото с matrix4 работал?) как отрисовать прямоугольник/квадрат если есть matrix4 ?)
Ivan Nagornyi
У всех норм работает vs code на маке? В последнее время как-то vs code начал глючить, зависать и крайне странно себя вести.
Alexandr Drobyshev
в вскод ток жс пишу, не глучит вроде
A
люди как сделать такой чекбокс
?????????? ??????????????
листБилдер внутри кастомный виджет чекбокса по стейту меняешь его внешний вид, при изменении меняешь стейт
Семён undefined
он типа все понял
Andrew Shalaev
Тогда пишите свой интерпертатор для своего языка плагинов) или что-то готовое взять может...Lua к примеру (почему бы и да?)
Squirrel
какой процесс в винде нужно грохнуть, чтобы удалить папку build?
Andrew Shalaev
Не забудьте за опенсорсить) Так то это крутая идея
Семён undefined
да я вот только это и придумал
Mykola Shevchenko
Можно сделать на вебвью, и плагины как обычные странички
Mykola Shevchenko
Но это, наверное, тупо)
Семён undefined
да не предлагайте мне вебвью
Stoner
почему проскакивает Future ? и _alerts всегда пустой ? я понимаю что асинхронность, но разве не должно подождать выполнение await а потом сработать finally ?
Dmitrij Kuznetsov
await Future.delayed(... или print('$ внутрь нужно поместить
horse horssyyy
Ты смешал тоай кетч и фьютуры
horse horssyyy
Трай кетч только с эвэйт работает или синхронным кодом
Dmitrij Kuznetsov
да кстати трай/кетч помести внутрь
Cat-Wizard Ashere
Ладно, я дурачек, признаю. Кхм. У кого-нибудь были проблемы с использованием intl и локализацией виджетов?
horse horssyyy
Можно сделать Future...then...whenComplete
Dmitrij Kuznetsov
да, я так и не понял как получить текущую, установленную програмно, локаль а так intl все работает
Cat-Wizard Ashere
мне просто надо локализовать date_picker, но когда я пытаюсь делегировать локаль, интл шлет меня нахрен
Cat-Wizard Ashere
ну то есть сначала меня шлет нахрен виджет, потому что "локали не существует", а потом прилетает уже от интела
Cat-Wizard Ashere
[
{
"type": "pre",
"text": "localizationsDelegates: [\n GlobalMaterialLocalizations.delegate,\n GlobalWidgetsLocalizations.delegate,\n GlobalCupertinoLocalizations.delegate,\n ],\n supportedLocales: [\n const Locale('en'),\n const Locale('es'),\n const Locale('fr'), \n const Locale('zh'), \n ],\n\n\n",
"language": ""
},
"Ну то есть условно прописываю это в материал, и мне прилетает еррор, что я сеттчу немутабельный объект интла"
]
Cat-Wizard Ashere
от localizationDelegates
Cat-Wizard Ashere
Вот я дурак, или лыжи не едут?
Roman Cores
Всем привет! Кто-то шарит в котлине?
Pavel Erokhin
Вопрос задавай сразу
***Eegor Balint***
[
"доброго всем дня!\nНе могу понять почему ``",
{
"type": "bold",
"text": "color:Colors.black,"
},
"`` выдает ошибку\n\n`` child:Column(\n crossAxisAlignment: CrossAxisAlignment.stretch,\n children: [\n Text('Add new task',\n textAlign: ",
{
"type": "link",
"text": "TextAlign.center"
},
",\n style: TextStyle(\n fontSize: 30.0,\n fontWeight: FontWeight.w600,\n color: Colors.lightBlueAccent,\n ),\n ),\n TextField(\n autofocus: true,\n textAlign: ",
{
"type": "link",
"text": "TextAlign.center"
},
",\n ),\n TextButton(\n child:\n Text(\n 'ADD',\n style: TextStyle(\n color: Colors.lightBlueAccent,\n fontWeight: FontWeight.w600,\n ),\n ),\n ",
{
"type": "italic",
"text": " color: Colors.black,\n"
},
" onPressed: (){\n //Add our task to the list\n },\n ),\n ],\n ),``"
]
Alexandr Drobyshev
а как сдлеать например картинку с обрезанными краями и рамкой?) то етсь понятно что обернуть можно Картинку в ClipRRect и зазать радиус, но как ееобести потом?) что пришло в голову первым, обернуть еще в контейнер, задать тоже бордер радиус и бордер, но тогда в углах пустые места если же сдлеать паддинг в контрейнере и залить его и остаивть у него бордер радиус, пустых мест нет, но у тогда толщина обводки не равномерная
Роман Аблаев
потому что она там лишняя
***Eegor Balint***
а куда писать цвет кнопки?
Roman Cores
в контейнер, содержаший текст
Роман Аблаев
оберни в контейнер и задай ему цвет
***Eegor Balint***
от души благодарен
Alexandr Drobyshev
вот две картиинки, обе не так обводят)
MiT
[
{
"type": "mention",
"text": "@bunopus"
}
]
Andrey
[
"Доброго времени суток всем, есть какие-то аналоги ",
{
"type": "link",
"text": "https://pub.dev/packages/screen"
},
" ? После изменения яркости через приложение яркость на устройстве перестаёт регулироваться если находишься в приложении"
]
MiT
[
{
"type": "link",
"text": "https://github.com/Overman775/flutter_screen"
}
]
Cat-Wizard Ashere
Гайзы, а showDatePicker показывает datePicker устройства или базовый дейтпикер материала?
***Eegor Balint***
[
"у меня тут ошибка, вроде по туториалу все делаю и нет никакой разницы в том, что я делаю и там.\n\nЕдинственная разница что туториал прошлогодний \n\n``class TaskCheckBox extends StatelessWidget {\n\n final bool checkboxState;\n final Function toggleCheckboxState;\n TaskCheckBox(this.checkboxState, this.toggleCheckboxState);\n\n ",
{
"type": "mention",
"text": "@override"
},
"\n Widget build(BuildContext context) {\n return Checkbox(\n activeColor: Colors.lightBlueAccent,\n value: checkboxState,\n onChanged: toggleCheckboxState,\n );\n }\n}``\n\n`` lib/widgets/task_tile.dart:44:18: Error: The argument type 'Function' can't be assigned to the parameter type void Function(bool?)?.\n - Function is from 'dart:core.\n onChanged: toggleCheckboxState, ``"
]
Squirrel
final Function(bool?) toggleCheckboxState; - попробуй скобок добавить
Ivan
Материал, у купертино с приставкой будет
Andrey
Спасибо, хотя он конечно не null safe, да и там столько форков
***Eegor Balint***
там все норм, но как оно бывает)) Error: The argument type 'void Function(bool)' can't be assigned to the parameter type 'dynamic Function(bool?)' because 'bool?' is nullable and 'bool' isn't. trailing: TaskCheckBox(isChecked, checkboxCallBack),
Cat-Wizard Ashere
понял, пасебо
Harley
ребят хотел спросить у кого нибудь есть анимация искры
Harley
что-то в этом роде
d
[
{
"type": "link",
"text": "https://lottiefiles.com/search?q=spark&category=animations"
}
]
Mykola Shevchenko
vpn не работает?
admin
Всем привет, подскажите пожалуйста. У меня есть несколько виджетов TextFormField я хочу обьеденить, а точнее сделать чтобы создать один textFormfield и потом в переменную count передавать значения и чтобы создавались textFormfield или другие виджеты как это правильно сделать подскажите пожалуйста. Говорили можно сделать с помощью ListView.builder(). я пробивал но ничего не получилось. Можно кейс или пример посмотреть как это сделать правильно. Заранее спасибо большое!
Harley
ребят как называется анимация где контейнер делает имитацию сердцебиение и сзади него идут волны?
Squirrel
[
{
"type": "link",
"text": "https://letmegooglethat.com/?q=flutter+container+heart+beat+animation"
}
]
Hamed
Hi, I want to give the desired time for the animation when I press a button, how can I do this?
d
[
{
"type": "link",
"text": "https://api.flutter.dev/flutter/animation/AnimationController/duration.html"
}
]
An
Уточните пожалуйста, вы хотите генерировать несколько разных виджетов или один и тот же?
An
в ListView.builder в itemCount ставите сколько надо, а в itemBuilder тот виджет, который надо
Egor Sigolaev
Привет всем. Подскажите, стоит с дарта начинать изучение флатера? Я 2 года в нативной разработке под ведро уже, это поможет как то во флатере?
d
- да - поможет, если нужно писать нативный код
Egor Sigolaev
А с этим мостом слишком запарно всегда?
d
вроде как нет, но я не сталкивался на практике
Egor Sigolaev
Это обычно для нативных компонентов? Кастом вью?
Egor Sigolaev
То, чего нет из под коробки во флатере?
Egor Sigolaev
И есть у кого видео уроки или статьи по дарту, чтобы быстренько въехать?
d
это платформо-специфичные штуки: платежи, всякие взаимодействия с камерой, иногда бывают Platform View, и так далее однако на эти аспекты уже есть очень много разных пакетов
Egor Sigolaev
Понял, пасиба
d
быстро можно въехать по Dart Tour (оффициальная дока)
Batyrzhan uulu
[
{
"type": "mention",
"text": "@ashere_the_cat"
},
" Здрасте, решили проблему с локалищацией виджетов? если то поделитесь секретом?"
]
***Eegor Balint***
[
"объясните пожалуйста в чем тут проблема и куда вообще смотреть?\n\n",
{
"type": "pre",
"text": "Closure call with mismatched arguments: function '_tasksListState.build. .'\nReceiver: Closure: (dynamic) => Null\nTried calling: _tasksListState.build..()\nFound: _tasksListState.build..(dynamic) => Null\n\n",
"language": ""
},
{
"type": "pre",
"text": "@override\n Widget build(BuildContext context) {\n return ListView.builder(itemBuilder: (context, index) {\n return TaskTile(\n isChecked: tasks[index].isDone,\n taskTitle: tasks[index].name,\n checkboxCallback: (checkBoxState) {\n setState(() {\n tasks[index].toggleDone();\n });\n }\n );\n },\n itemCount: tasks.length,);\n }\n}",
"language": ""
},
""
]
Cat-Wizard Ashere
да, решил. Убрал initializeDateFormatting, вместо этого сказал Intl.defaultLocale = 'ru_RU', в Scaffold кинул делегирование локализации глобально по виджетам и материалу, докинул саппорт языки туда же
Cat-Wizard Ashere
не скаффолд, Материал
Cat-Wizard Ashere
Все заработало как часики
***Eegor Balint***
[
"объясните пожалуйста в чем тут проблема и куда вообще смотреть?\n\n",
{
"type": "pre",
"text": "Closure call with mismatched arguments: function '_tasksListState.build. .'\nReceiver: Closure: (dynamic) => Null\nTried calling: _tasksListState.build..()\nFound: _tasksListState.build..(dynamic) => Null\n\n@override\n Widget build(BuildContext context) {\n return ListView.builder(itemBuilder: (context, index) {\n return TaskTile(\n isChecked: tasks[index].isDone,\n taskTitle: tasks[index].name,\n checkboxCallback: (checkBoxState) {\n setState(() {\n tasks[index].toggleDone();\n });\n }\n );\n },\n itemCount: tasks.length,);\n }\n}",
"language": ""
},
""
]
Cat-Wizard Ashere
есть ощущение, что ты передаешь несуществующий List
Cat-Wizard Ashere
или Map
***Eegor Balint***
Лист - да. Но вроде все есть.
Alexey
даже если ошибка неясна, то самое простое - заменять блоки на что-нибудь типа Text("Test") и смотреть, ушла ли ошибка. Самый научный подход
***Eegor Balint***
setState() or markNeedsBuild() called during build.
***Eegor Balint***
ну пока что вроде есть что-то ))
Alexey
видимо дело в callback
***Eegor Balint***
да ошибка вышла как только его добавил
Cat-Wizard Ashere
качество 10 шакалов из 10
Dima Kotlyarov
мужик - я смеялся только что с твоей фразы как потороченый просто
Dima Kotlyarov
10 шакалов из 10 это ж надо )))))
Noob Noobskiy
[
"Может кто в двух словах объяснить, где и для чего используются Provider, Bloc? Особенно про BloC, и Cubit.\n В ",
{
"type": "link",
"text": "pub.dev"
},
" нашел bloc, flutter_bloc, и bloc_provider.\n Какая из них чаще используется? Одно и то же ли это? \nМожно ли использовать bloc_provider вместо provider, есть ли разница? \n\nИ еще, есть ли хорошие, по вашему мнению, уроки по bloc и provider на русском языке в любом (текстовом, видео) виде?\nЕсли я уроки на голову выше, но на английском, то тоже буду рад) Да хоть на испанском, все равно через переводчик буду учиться)"
]
MiT
[
{
"type": "link",
"text": "https://bloclibrary.dev/"
},
"\n",
{
"type": "link",
"text": "https://bloclibrary.dev/#/ru/"
}
]
Andreu
всем добрый. Как между TableRow установить отступы?
David
грубо говоря. Есть у тебя информация о пете, и ты хочешь чтобы эта информация была доступна и автоматически обновлялась в 5 разных виджетах. Для этого и нужны state manager'ы. Разница между ними есть, в целом всё упирается в отдельное "удобство", ибо нет фаворита в этой паре универсального. Насчёт гайдов на русском-чёрт его знает, тут не подскажу
MiT
Или вообще в Table это делается, уже не помню…
Шахзод Джураев
О, а как называется это расширение которое предупреждения вот таким образом показывает?)
Ivan
[
{
"type": "link",
"text": "https://dart.dev/guides/language/analysis-options"
}
]
Noob Noobskiy
Это кстати страшная вещь. Я сделал flutter upgrade, и теперь у меня вот такое
Шахзод Джураев
Разве? Это не тулза vscode?
Ivan
возможно и есть в вскоде такой плагин, но он будет выводить возле кода текст с описанием, а так это просто линтер
Dima Kotlyarov
10 шакалов из 10
Шахзод Джураев
Я о плагине спрашивал)
Вадим
Это плагин Дарта показывает подсказки
Cat-Wizard Ashere
Error Lens
Dagba
что вы используете в качестве идентификатора экрана в диплинках: идентификатор как свойство класса или название класса экрана?
|