Программирование : Dart & Flutter по-русски
Oleg Pchelkin
А чего не сделать синглтон обычный? Ну а так посмотрите DI во flutter, в частности getit как один из самых популярных
Oleg Pchelkin
Смотря как реализуешь?? Блок чуть менее структурирован и по сути в нем можно напрямую использовать слой данных, если захочешь(но не нужно бы). MVVM тоже можно наворотить, но он более структурировано описан и там VM не должна напрямую идти в данные. Но если реализовывать "правильно", особо разницы нет
Ivan Pavlov
Всем добрый вечер! Пробую добавить Hive:
Ivan Pavlov
Кто-нить сталкивался с подобным?
NewBalanceM5
[
"Теперь в ",
{
"type": "bold",
"text": "master"
},
" и ",
{
"type": "bold",
"text": "dev"
},
" ветке можно создавать ",
{
"type": "bold",
"text": "Flutter"
},
" приложение только под MacOS.\n— Включить поддержку MacOS с помощью",
{
"type": "code",
"text": " flutter-config --enable-macos-desktop"
},
".\n— Запустите приложение с помощью ",
{
"type": "code",
"text": "flutter run -d macOS"
},
".\nПодробнее тут: ",
{
"type": "link",
"text": "goo.gle/2UxNuuA"
},
""
]
Alexey Z
[
{
"type": "link",
"text": "https://github.com/hivedb/hive/issues/337"
}
]
Aleksandr
ok, а как spaceBetween реализовать с его помощью?
?
ну... можно задать спейсинг между итемами
Aleksandr
можно его задать, а как это решит проблему?)
?
[
"Можешь еще попробовать ",
{
"type": "link",
"text": "https://api.flutter.dev/flutter/widgets/Wrap-class.html"
},
""
]
?
Ну... еще так же можно и под windows с linux, угадай что нужно изменить в этой строчке "--enable-macos-desktop" =)
Aleksandr
ну wrap тоже нет...
?
Ну... тогда ток ручками)
Sergey Salnikov
Я бы не стал удерживать его, поскольку это element и он держит рендер объект, если элемент уйдет из дерева то останется в твоём удержании. Последствия? Хз я не изучал, я так не делаю. Лучше глобальный ключ навигатора и дело в шляпе
Mansur Panzerkampfwagen IV
спасибо!
?
выдаст ошибку, что контекст уже не тот)
Sergey Salnikov
Вообще не стоит кэшировать что-либо из фреймворка
Dmitry Sakhnov
Почему подчёркивает utils красным? Если такой файл создан.
?
а текст ошибки можно? или мы по красному должны понять?)
Dmitry Sakhnov
так он не говорит, вроде понятно, что он не видит файл. Файл создан и импортирован в notesdbworker
?
Ну... если нет текста ошибки, наши руки связаны
Dmitry Sakhnov
Так я переписал полностью код, подправил отступы, ошибки больше нет
Sergey Hottabych
Зачем вы все время химичите с навигатором? Какие-то адовые костыли выдумываете
Sergey Hottabych
И что за NavigationManager?
Sergey Hottabych
не знаю такого класса
Roman Vasiliev
В идеале контекст никуда за пределы виджета передавать нельзя
Mansur Panzerkampfwagen IV
забыл что navigation manager это не стандратная штука. У нас он отвечает за навигацию, у него есть методы, которые ссылаются на контекст. В этом проекте mvp, presenter вызывает метод view, который запускает навигацию и вот этот метод использует контекст
Sergey Hottabych
Проект случайно не шэринг самокатов?
Sergey Hottabych
Мне просто попадался один проект, там тоже MVP и адовые костыли, вплоть до твиков в исходниках Флаттера.
admin
поюзал кароче АС, подсказки параметров и пр. по дефолту выключены?
admin
навожу на что-то и ничего не происходит
Sergey Hottabych
Да, по дефолту выключены
Sergey Hottabych
Где-то в настройках включаются, не помню опцию
admin
о боже как это всё выглядит там ы
Roman Vasiliev
Там еще можно зажать пару клавиш и он список просто выдаст
Roman Vasiliev
Я обычно его юзаю
Roman Vasiliev
Тыкабельный
Sergey Hottabych
Show Quick Documentation On Mouse Move
Roman Vasiliev
Ctrl+space вроде
Roman Vasiliev
Я уже настолько привык, что забываю как его включаю
Sergey Hottabych
Лучше в VS Code иди. Там все то же самое есть. Но он пошустрее.
admin
да не, мне тут челики втирали что АС тру
admin
я установил плагины, тему и прочее
admin
зашел, работает, выглядит убого, работает медленно
Roman Vasiliev
На жабке же)
Sergey Hottabych
Я сидел на АС, и в итоге вернулся на VS Code.
admin
дыа) жабка, 16 гигов оперативны на хелло ворлд еле хватает)))0
admin
и про дебаггинг тоже глянул, у флаттера свои тулзы нормальые, логи с телефона можно включить через консоль
Roman Vasiliev
Мне хватает
admin
кароче нет смысла юзать ас
Roman Vasiliev
Лютые тормоза только в non distraction режиме наблюдал
Roman Vasiliev
На переключении
Roman Vasiliev
Вот там да, чаек можно попить
admin
во флаттер даже гайд есть, как с рн перейти) молодцы гугол
admin
ни во флаттере а в доке по флаттеру точнее
Avada Kedavra
[
"Написан виджет \n",
{
"type": "pre",
"text": "Column(\n mainAxisAlignment: MainAxisAlignment.end,\n children: [\n Chip(\n avatar: CircleAvatar(\n child: Text(\"\\D\"),\n ),\n labelPadding: EdgeInsets.only(top: 0, bottom: 0),\n label: Text(\"$a - $b\"),\n ),\n Container(\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(\n color: MyColors.headerColor,\n style: BorderStyle.solid,\n width: 15),\n bottom + left + right: BorderSide(\n color: Colors.transparent,\n style: BorderStyle.solid,\n width: 15),\n ),\n ),\n child: SizedBox(height: 0, width: 0,),\n ),\n ],\n )\n",
"language": ""
},
"2 вопроса)\n1. Как убрать промежутки между Chip и Container?\n2. Как сместить оба виджета еще вниз на 15, при том, что местоположение контейнера я не могу контролировать а отрицательные марджины - нельзя)"
]
?? Назар Калитюк
промежутки удобно через SizedBox()
Avada Kedavra
типа нулевой поставить?
Avada Kedavra
не помогло(
?? Назар Калитюк
не то написал я. Имел ввиду сместить на 15 вниз. Добавить первым children SizedBox()
Avada Kedavra
в девтулзе не могу найти что эти промежутки заставляет быть)
Avada Kedavra
Сейчас попробую, не подумал) ночь все таки)
Shakhzod
[
{
"type": "link",
"text": "pub.dev"
},
" у всех упал?"
]
Shakhzod
10 минут уже так
Avada Kedavra
нет, оно в итоге добавляет промежуток, т.е подняло вверх Chip на размер бокса(
Avada Kedavra
У меня работает
?? Назар Калитюк
ты же перед chip добавил?
Shakhzod
странно, по впну тоже не работает
Avada Kedavra
там просто все это засовывается в MarkerGenerator, который генерит картинку, которая присваивается маркеру)
Avada Kedavra
[
"отсюда - ",
{
"type": "link",
"text": "https://gist.github.com/itsJoKr/ce5ec57bd6dedf74d1737c1f39481913"
},
""
]
Avada Kedavra
2й вопрос решил, убрал нижнюю прозрачную границу - чуть кривее стало но пока сойдет)
Avada Kedavra
а как промежутки убрать между элементами Row или Column?
Avada Kedavra
Похоже только со стеком мудрить(
Илья Морозов
Доброго утра , кто нибудь делал на флаттер локальную схему производственного помещения с навигацией по Jps и ble маякам ?
Илья Морозов
Если не делали то сделайте до понедельника будьте добры
Илья Морозов
А если серьезно , вдруг у кого то есть опыт готовы заплатить за консультацию
Max
Звучит как пример задачи, которую удобнее было бы решать нативными средствами: - В корпоративной среде обеспечивать мультиплатформенность может быть дороже, чем обеспечить всех сотрудников устройствами с Android - Основным содержанием приложения будет низкоуровневая работа с Bluetooh (GPS под крышей относительно бесполезен), для которой в любом случае пришлось бы писать "платформенный" плагин (сомневаюсь, что всё, что понадобится, уже есть в готовом виде)
Илья Морозов
Спасибо , тоже есть такие мысли Спросил потому что а что а вдруг
Max
[
{
"type": "link",
"text": "https://pub.dev/packages?q=bluetooth"
}
]
Max
Не вижу ни одного, который отдавал бы мощность сигнала.
Liliya A.
Привет всем, вопрос от новичка - что сейчас актуально использовать для State Managment, программа сложная, не пара окон, куча всего. Прочитала у вас тут что Scoped Model уже не используется, а я проходила курс на Udemy и там было о ней. Спасибо за помощь!
Roma
[
"Насколько знаю, такие мячки называются ibeacon\nБыстрый поиск выдал\n",
{
"type": "link",
"text": "https://pub.dev/packages/flutter_beacon"
},
""
]
Roma
Есть еще такая статья для удешевления датчиков, для локации их, скорее всего, много нужно
Roma
[
{
"type": "link",
"text": "https://voltiq.ru/hm-10-as-cheap-ibeacons/"
}
]
Шахзод Джураев
Вас забанили
МихаИл
ребят, привет, чет туплю, подскажет как найти позицию вхождения строки1 в строке2?
??†e???
[
"Сорян за оффтоп, хотел бы, чтобы Роман почитал как тяжко в нашей стране быть автором и издать книгу ",
{
"type": "link",
"text": "http://chrns.com/blog/rus/2018/11/publication.html"
},
""
]
Sergey Hottabych
Теперь он называется Provider.
Liliya A.
Да, это я поняла, а что использовать лучше для сложной программы?
Роман Букинхайм
[
"спс, почитал. Концептуально в данном материале ничего нового не подчерпнул. В свою очередь порекомендую вам \"Капитализм Платформ\" Ника Срничека. Поверьте, Срничек не против того чтобы его труды распространялись ЛЮБЫМ способом. В данном же труде нет нытья неудавшегося автора, пытающегося заработать копеечку от своей писанынины, а глубокий анализ современной цифровой действительности и как её определяют платформы, в том числе и те, что перечислены в той статье, которую вы скинули.\nНа мой сугубо личный взгляд, когда субъективно несколько людей пытаются противостоять прогрессу, они действуют так же непродуктивно, как луддиты, ломающие станки. По-факту файл со своего рабочего стола я могу распространить как у годно, куда угодно и сколько угодно. Технические средства сделали любой интеллектуальный труд БЕСКОНЕЧНО КОПИРУЕМЫМ, при этом частное право на творение вступает в противоречие с этой возможностью. Из этой необходимости логично следуют 2 путя: либо заниматься луддизмом и ныть \"как тяжело! вокруг пираты\", либо пойти в ногу со временем и монетизировать интеллектуальные продукты за счет увеличения качества продуктов и доступности сервисов их предоставляющих (есть даже успешные примеры). Платформы, же в свою очередь, данную необходимость осознали, чего нельзя сказать о людях взъерипенившихся на мою выходку.\nКроче говоря, если для вас эта тема настолько больная что вы даже спустя несколько дней про нее вспомнили, то предлагаю продолжить дискуссию в ЛС.\n",
{
"type": "link",
"text": "http://kyrgsoc.org/books/srnicek_platform_capitalism.pdf"
},
""
]
Роман Букинхайм
и кстати, благодаря платформам проблемы аналогичные российским, так же присутствуют и в Британии, где издается сам Срничек. Так что тут нет никакой национальной специфики
Nikita Domnitskii
Не называется
Роман Букинхайм
везде сложно монетизировать писанину
Sergey Hottabych
Да будет провайдеросрач!
Sergey Hottabych
[
"Посмотри вот это\n",
{
"type": "link",
"text": "https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple"
},
"\nИ вот этот пример:\n",
{
"type": "link",
"text": "https://github.com/brianegan/flutter_architecture_samples/tree/master/change_notifier_provider/"
},
"\nЯ все так же делаю, пока с головой хватает."
]
Aleksandr
всем привет! Есть проблема с адаптивностью. В общем есть 3-4 виджета фиксированной высоты. Их надо расположить на экране вертикально, но если они не помещаются по высоте, то их можно скролить, ал-я ListView. А если они помещаются по высоте, то должны быть распределены ал-я MainAxisAlignment.spaceBetween. Как сделать?)). Продублирую) ещё вопрос, можно ли как-нибудь узнать размеры виджета, до его визуализации? Ну Как нибудь его программно с рендерить и узнать размер, и на основании этого выполнить нужеый код в build методе парента?)
Sergey Hottabych
Размеры никак. Только в ListView есть параметр shrinkWrap, но он прожорливый
Aleksandr
Есть мысли в первом запуске build отрисовать, вычислить размеры виджетов и второй раз вызвать build с уже имеющимися размерами. Но как то костыльно)
Sergey Hottabych
Конечно, костыль.
Sergey Hottabych
Думаю, LayoutBuilder — то, что тебе нужно.
Aleksandr
Мне нужны размеры children, а не parent виджетов.
Sergey Hottabych
Если они у тебя точно фиксированной высоты, и ты знаешь, какой именно, ты можешь просто посчитать. Например, Container.height = childrenCount * childHeight;
Sergey Hottabych
А программно извлечь размер никак нельзя.
Roman Vasiliev
можно, правда костыльно и после отрисовки
Sergey Hottabych
Ну я и говорю, что это костыль. Два раза раскладывать и перерисовывать.
Alexander Voronov
[
"Подскажите пожалуйста, как получить иконку по названию в строке?\nБыло ",
{
"type": "code",
"text": "var icon = Icons.directions_car;"
},
"\nНадо что-то вроде\n",
{
"type": "pre",
"text": "String iconName = \"directions_car\";\nvar icon = Icons[iconName];",
"language": ""
},
""
]
Sergey Hottabych
[
"чего-то я сомневаюсь, что так можно сделать\n",
{
"type": "link",
"text": "https://api.flutter.dev/flutter/material/Icons/add-constant.html"
},
"\nIcons — класс, содержащий константы\nи там имени строкой нет, там hex-коды иконок"
]
Alexander Voronov
Уже начал делать через hex коды, придется бэкэнд корректировать)
Sergey Hottabych
Такой синтаксис — это индексатор (в дарте operator []) Но для Icons он не определен.
Alexander Voronov
Понял, спасибо!
Sergey Hottabych
Можешь через extention определить для Icons метод getByName() или operator[] И туда прописать имена иконок, которые ты используешь. Не все, конечно, а только нужные.
Sergey Hottabych
[
"Что-то типа такого\n\n",
{
"type": "pre",
"text": "extension GetIconByName on Icons {\n IconData operator [](String name) {\n var result;\n switch (name) {\n case \"movie\": result = Icons.movie;\n break;\n ...\n default: result = Icons.error;\n }\n return result;\n }\n}",
"language": ""
},
""
]
Alexander Voronov
Спасибо, но их слишком много, я сделал через hex’ы
Димка
Всем привет, подскажите плиз, хочу написать апликуху для ios + android на flutter соответственно. Какая щас самая актуальная связка, к примеру flutter+ redux или есть что-то еще, или есть смысл писать только на чистом dart без использования сторонних библиотек В апликухе я не буду дергать какие-то нативные вещи по типу камеры
Igor Kusoff
что значит актуальная?
Димка
самая используемая*
Igor Kusoff
это называется не актуальная, а модная)
Roman Vasiliev
Bloc самая используемая
Igor Kusoff
вроде бы BLoC сейчас самый модный, но это не точно)
Roman Vasiliev
Но некоторые говорят бойлерплейта много
Igor Kusoff
заисит от задач //как и всегда
Димка
BLoC -> гляну, спасибо
Николай Ильинов
Вроде бы из последних трендов rxdart вспоминается...
Sergey Hottabych
Только не redux, самый тяжелый паттерн, с мудреной философией и огромным количеством бойлерплейта.
Sergey Hottabych
Но это же не архитектура. Это просто набор расширений к Stream.
Димка
Приложение будет брать инфу с сервера и будет простая навигация по приложению, максимум еще - notofication
Николай Ильинов
[
"На основе stream можно менять widget`s. StreamBuilder вроде бы.\nИ тогда составлять проще. BLoC сложноват для понимания, и бойлерплейта там правда многовато...\n\n",
{
"type": "link",
"text": "https://habr.com/ru/post/450950/"
},
""
]
Avada Kedavra
Извините, повторюсь) Как промежутки убрать между элементами Row или Column? Чтобы прилипли друг к другу
Sergey Hottabych
[
"Provider идеальный для тебя вариант.\nПосмотри: ",
{
"type": "link",
"text": "https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple"
},
"\nИ вот:\n",
{
"type": "link",
"text": "https://github.com/brianegan/flutter_architecture_samples/tree/master/change_notifier_provider/"
},
""
]
Sergey Hottabych
Я не одобряю засорять приложение кучей StreamBuilder'ов.
Igor Kusoff
вроде там и не должно быть промежутков
Igor Kusoff
это картинка, а где код?
Avada Kedavra
[
"Написан виджет \n",
{
"type": "pre",
"text": "Column(\n mainAxisAlignment: MainAxisAlignment.end,\n children: [\n Chip(\n avatar: CircleAvatar(\n child: Text(\"\\D\"),\n ),\n labelPadding: EdgeInsets.only(top: 0, bottom: 0),\n label: Text(\"$a - $b\"),\n ),\n Container(\n decoration: BoxDecoration(\n border: Border(\n top: BorderSide(\n color: MyColors.headerColor,\n style: BorderStyle.solid,\n width: 15),\n bottom + left + right: BorderSide(\n color: Colors.transparent,\n style: BorderStyle.solid,\n width: 15),\n ),\n ),\n child: SizedBox(height: 0, width: 0,),\n ),\n ],\n )\n",
"language": ""
},
"2 вопроса)\n1. Как убрать промежутки между Chip и Container?\n2. Как сместить оба виджета еще вниз на 15, при том, что местоположение контейнера я не могу контролировать а отрицательные марджины - нельзя)"
]
Igor Kusoff
скорее всего, у чипсы есть паддинг, можно попробовать заменить его на дугой виджет
Avada Kedavra
ага, попробую так, спапсибо, но она хорошо подходит
Sergiy Vergun
[
"Как решить проблему с иконками? Генерировал их сдесь ",
{
"type": "link",
"text": "https://www.fluttericon.com/"
},
""
]
Avada Kedavra
да, очень похоже, спасибо, буду думать как обойти)
Avada Kedavra
Тогда встречный вопрос, а как убрать встроенные паддинги у Chips? )))
Avada Kedavra
в девтулз не могу их найти
. .
А сколько там платить надо?
. .
Чтобы протестить на ios
. .
Так мне сказали что тут протестить на ios можно
. .
У меня тут написано Free Mac mini minutes
. .
Вот и думаю, сколько стоит купить минуты
Evgenii Elchev
ни у кого DateInputFormatter не завалялся?)
Anton ?? ? ??
ну у меня мак, если бы ты сразу задал этот вопрос, то я бы не ответил, потому что использовал его исключительно как CI
. .
У меня на хаке не видит эмулятора ios
Anton ?? ? ??
он устанавливается с Xcode
. .
Я установил xcode старой версии
. .
Т.к с апстора установить не смог
. .
Из-за того что мохаве стоит
Anton ?? ? ??
так вот, это программа, она не может быть не видна
. .
И с этими костылями ничего хорошего не вышло
Илья Морозов
Благодарю ??
ilx13
Ребята свайп назад на андроиде не работает. на айфоне работает. из за чего так? раньше же работало
Gorohov Valeriy
Из-за того, что это поведение iOS и на Андроиде его по умолчанию нет. Правильный вопрос: почему раньше работало? Возможно где-то в настройках темы что-то было.
ilx13
и так как исправить? не подскажете
Gorohov Valeriy
Можно в теме platform указать как iOS (возможны побочки). Или CupertinoPageRoute использовать.
Gorohov Valeriy
Но лучше не трогать, т.к. пользователям Android это может быть непривычно.
DVS (Read The F.ng Manual) Studio (NoHello)
Дружно вспоминаем телеграм))
Александр
Здоавствуйте. А что initState() срабатывает позже чем build() ?
Umarjon
return to child, child to itemBuild
Umarjon
how to do those lines
Александр
блин. не пойму. у меня инеит стейт тащит из файрбейс, а как мне полученную дату поместить в build. там null
Roman Vasiliev
ждать пока будет не null
Umarjon
anybody help!!!!!!!!!!!!!!!!!!!
Александр
точно ! спасибо
Александр
так build не ждет, initstate не успевает из файрбейса получить
Roman Vasiliev
setState, либо что уже посоветовали
Roman Vasiliev
но это используют обычно, когда с архитектурой беда (хотя, если данные запрашиваются в виджете напрямую, то это, скорее всего, именно этот случай)
Александр
да можно мне кажеься сразу в футрбилдер кидать ссылку, без инит стейта
Umarjon
Кто-нибудь знает, как это сделать соединение линии в Visual Studio Code?
Anton ?? ? ??
дарт расширение же опенсорс
Anton ?? ? ??
а, так в настройках дарт плагина ui guides
Umarjon
можешь дать мне инструкцию
Umarjon
огромный спасибо!
Moby Polo
Господа, совсем простой вопрос: Есть Column, в ней несколько полей, конечно ей нужен Container с определенной высотой. Вопрос, как мне задать высоту таким образом, что бы она была 100% равна высоте всех элементов в этом Column. Если сравнивать, например, с html, то мне нужно поведение div по-умолчанию, то есть когда div занимает только ту высоту, которая нужна детям.
Sergey Hottabych
It's a flaw of extension. You should manually adjust Font -> Line Height in VSCode settings.
???????
У тебяж там есть поля у Column для задания её поведения по main и cross осям
???????
[
"Это рускоязычный чат.\nИнтернациональный тут: ",
{
"type": "link",
"text": "https://t.me/dartlang_group"
},
""
]
Moby Polo
Уточню, мне надо что бы вот «container with column» был с autoheight, если я добавляю новое text field он увеличивается по высоте сам
|