Программирование : Dart & Flutter по-русски
Борис
У меня Стейт содержит большой объект со вложенными списками и большим количеством свойств, допустим, я по событию меняю одно свойство и делаю yield State(state.myobject) то есть передаю туда тот же объект, что и был, но с измененным свойством , изменение состояния не срабатывает, что по идее логично, он считает, что раз объект не поменялся(сравнивает с собой), то и Стейт менять не надо. Судя по документации нужно делать yield State(state.myobject.copyWith(changedProperty: newvalue)) А equatable я реализую, для сравнения объектов по свойствам, как в примерах от фелангеля указано
Nikita Domnitskii
глянь freezed, built_value
Борис
Спасибо, а как поменять версию? Не нашел это поле, нужно реализовывать какой-то интерфейс, который bloc понимает?Спасибо за ссылки
Roman Diachenko
[
"как определить когда заканчивается анимация для ",
{
"type": "code",
"text": "CupertinoPageRoute"
},
"?"
]
Игорь Кравченко
добавляешь int version в state и в эквейтбл смотришь на версию
Игорь Кравченко
в расширении есть пример - сгенерируй big pack bloc -> mutbale
Ильдан С.
Привет, подскажите статью по bottomtapbar, чтобы при навигации на новый Пейдж сохранялся ботомтаббар
Игорь Кравченко
проекты с генераторами - это атас жесть когда он вырастает) пересчитать файлы может быть 3 минуты, а отслеживание изменений для частичной сборки работает так себе....
Борис
Как говорится "А что так можно было что-ли?"))) Хорошо, буду разбираться, спасибо за помощь)
Nikita Domnitskii
чай можно попить
Игорь Кравченко
[
{
"type": "link",
"text": "https://github.com/Gorniv/vscode-flutter-files/tree/master/templates/mutable"
}
]
Nikita Domnitskii
а можно руками это все писать????
Игорь Кравченко
ага, после каждой новой модели ?? сборк в лиге идет 2-3 минуты - чисто модельки пересчитать)
Kuepf
У кого то есть идеи как это сделать?
Игорь Кравченко
я так и делаю, нормально с генераторами расширениями)
Игорь Кравченко
зато контроль кода есть и не ломается в самый неожиданный момент)))
Nikita Domnitskii
ни разу ничего не ломалось
Игорь Кравченко
а на сколько большой проект?) у меня за два месяца в лиге - генератор ломалася раз 5 =) кое-что пришлось даже форкнуть, ну и я большой кусок переписывал - так что там жестоко с зависимостями иногда было =(
Nikita Domnitskii
да средний, наверное
Andrew Ka
[
{
"type": "link",
"text": "https://youtu.be/4YfiIJgrrIU"
}
]
Александр
а что делает этот код?
Александр
[
"if (!mounted) return;\n setState(() {\n name = ",
{
"type": "link",
"text": "author.data"
},
"['name'];\n });"
]
Александр
этот -- if (!mounted) return;
Kuepf
Буду очень признателен если у кого то есть идеи
vasilich
[
"Поддержите лайком ишью…\n",
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/50713"
},
""
]
????? ILyos >
Как сделать так чтоб через slider изменит размер ширифта приложения?
????? ILyos >
Есть пример?
Ulugbek Usmanov
Что мне использовать показать list child
Andrey Tsvetkov
ExpansionTile
Stan Mitchel
[
"всем привет, пользовался ли кто-то этим пакетом для организации роутинга и state management в проекте? ",
{
"type": "link",
"text": "https://pub.dev/packages/get"
},
""
]
Александр
[
"у меня есть массив с такими штукам class Msg {\n String author;\n DateTime createDate;\n String content;\n\n Msg({",
{
"type": "link",
"text": "this.author"
},
",this.createDate,this.content});\n\n}. как мне отсортировать его по дате?"
]
Maks Andrienko
сортируй по дате
Александр
можно пример, не могу въехать
Maks Andrienko
[
{
"type": "code",
"text": "list.sort((a, b) => a.startDateTime.compareTo(b.startDateTime));"
},
"\n",
{
"type": "link",
"text": "https://api.dart.dev/stable/2.8.4/dart-core/DateTime/compareTo.html"
}
]
Александр
что то не работает
Nikita Domnitskii
вы сообщения об ошибках научитесь читать когда-нибудь?)
Александр
ну там что то не понятное
Nikita Domnitskii
sort возвращает void (что конечно тупо). что тебе не понятно?
Nikita Domnitskii
[
"поставь ",
{
"type": "code",
"text": "..sort"
},
""
]
Maks Andrienko
ну не надо так агрессивно, все же мы чего то не знаем и не понимаем
Александр
O!Вроде заработало. Спасибо комрады
Nikita Domnitskii
систематически это уже нежелание учиться
Александр
а что такое ..sort?
Maks Andrienko
хочешь сказать что не первый раз такой вопрос задает ?)
Александр
наоборот ,если ты систематически не хочешь учится, значит ты систематически учишься, иначе бы желания не учится не возникало бы)
Nikita Domnitskii
постоянно
Nikita Domnitskii
[
".. это по сути ",
{
"type": "code",
"text": "var list = []; list.sort(); return list;"
},
""
]
Александр
ну ы двух словах, что дают две точки перед sort?
Nikita Domnitskii
он в общем применяет функцию к объекту и возвращает сам объект, а не результат выполнения функции
Nikita Domnitskii
гугли cascade operator dart
les forest
это получается функтор?
Nikita Domnitskii
это просто сахарок такой
Igor Yaz
Как можно стек навигации посмотреть?
Maks Andrienko
Подскажите, как можно в TabBarView открыть не первый Tab, а второй? типо я понимаю что наверное надо использовать tabController, но не могу до конца понять как(
Sergey Hottabych
Что такое функтор?
Kuepf
индекс 2 по дефолту
Dmitry Bubnenkov
[
"А в Dart вот таким образом нельзя проверять наличие поля?\n",
{
"type": "pre",
"text": " String str = '{ \"name\":\"John\", \"age\":31, \"city\":\"New York\" }';\n var x = json.decode(str);\n\n if (x.name)\n {\n print(\"name is exists\");\n }\n else{\n print(\"Not\");\n }\n",
"language": ""
},
"\n?"
]
Maks Andrienko
там ведь нету индекса(
Sergey Hottabych
Две точки - аналог котлиновского apply
Maks Andrienko
я смотрю на TabBar и TaBarView и индекса нету(
Nikita Domnitskii
в кратце это всё по чему мапиться можно
?
через x['name'] != null
Dmitry Bubnenkov
А посредством чего лучше большой json c вложенностью жлементов проверять? Перед запихиванеим в БД нужно убедиться что все поля есть
Kuepf
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/52941366/how-to-change-the-default-tab-while-navigating-in-flutter"
}
]
Maks Andrienko
аааа, тю спасибо
Maks Andrienko
Ага, теперь анимация перехода на другой таб не работает)) наверное ему нужен ключ еще ?
Sergey Hottabych
Я бы сделал у модели метод isValid и вручную проверил, что все поля не null. Может, есть какие-то более короткие способы, не знаю
Maks Andrienko
Все, исправил. Спасибо еще раз
Dmitry Bubnenkov
ты бы json в класс бы превратил? И с ним работал?
Dmitry Bubnenkov
Я просто думал руками все поля проверять
Maks Andrienko
если ты используешь json_annotation но там есть аннатация на nullable, кажется Json_Key (nullable)
Dmitry Bubnenkov
я пока ничего не использую, я думаю как лучше сделать
Dmitry Bubnenkov
у меня есть 20 вероятных комбинаций полей и мне нужно их в БД раскидать
Sergey Hottabych
А как по-другому? Тебе прилетает с сервера ответ в json - текстовый файл определённого формата. Ты его должен распарсить в класс, который уже хранится в памяти приложения. Всегда так делают.
Dmitry Bubnenkov
по структуре полей поняв в какому типу относится документ
Dmitry Bubnenkov
да я думал просто в Map его закинуть и проверять просто наличие полей. На null значеиня проверять не надо т.к. у меня там их не будет, но вот поле может отсутствовать
Dmitry Bubnenkov
если у меня 20 комбинаций JSON (из которых у 10 90% полей одинаковые) то мне 20 классов создавать? И как проверять к какому классу подходят данные?
Andrey Tsvetkov
[
{
"type": "code",
"text": "if(field1 == 'typeA')"
}
]
Ильдан С.
ребят как сделать : на странице есть кнопки с переходами на другие страницы и где-то надо чтобы оставался bottomNavigationBar, а где-то нет
Sergey Hottabych
Есть расширение для VSCode - JSON Generator, он тебе создаёт модель по примеру JSON-ответа. В том числе Дарт поддерживает
Sergey Hottabych
Но если там 90% полей одинаковы, то может, стоит наследование применить?
Andrew Ka
[
{
"type": "link",
"text": "https://youtu.be/hCRQZszTLeY"
}
]
Dmitry Bubnenkov
Тут фишка в том еще, что различаются вложенные поля
Sergey Hottabych
Я, конечно, извиняюсь, но какой смысл выкладывать 300 видосов по 2 часа, с названиями типа "я разобрался с компонентом Text", которые никто, кроме тебя, не смотрит?
vasilich
Давно отвечали на этот вопрос - копит портфолио на джуна. Пруф Оф Ворк)
Sergey Hottabych
Ну и трудяга!)
vasilich
Да, плодовитости можно позавидовать ;-)
Igor Kusoff
каким образом это может стать частью портфолио?)
Sergey Hottabych
Не пройдёт и года, как эта красотка будет моей (с) Ковбой Джо.
vasilich
Это не мои заботы) Человек так себе придумал - я процитировал его ответ)
Igor Kusoff
какие-то странные иллюзии у комрада, кмк)
Evgenii Elchev
Но только боюсь это не будут смотреть при найме)
les forest
чтобы ты тоже не смотрел) просто не смотри
neikist
Ну как сказать. Упорство и целеустремленность таки могут оценить)
Evgenii Elchev
Люди конечно все разные. Кто то может оценить упорство, кто то даже не задумается и не откроет. А кто то может откроет, увидит в целом ничего обычного, куча вкладок в браузере, довольно разряженный процесс кодинга и рассуждений. Смотреть хотя бы одно видео, можно уснуть)
Evgenii Elchev
Но если человеку нравится почему нет
Evgenii Elchev
Я вчера видео про DI записал, тоже довольно посредственно получилось (
Evgenii Elchev
Ребят, а что там у флаттера для мак ос и винды? Сильно все плохо?
Павел Середа
как степень паршивости измерять?
vasilich
МакОс получше. Винда пока в превью
Павел Середа
по идее по части уи всё должно быть идентично остальным большим полосатым ОСам, так как рендеримся в ОпенГЛ
vasilich
Самая неприятная вещь - многие плагины не бум-бум о винде)
Evgenii Elchev
Хз. Вообще не криво, некоторые стандартные виджеты глючат, стандарт работает нормально. Как то так хотя бы)
Evgenii Elchev
По этому не надо много плагинов юзать)
Evgenii Elchev
Звучит довольно оптимистично
Evgenii Elchev
Сеть надеюсь тоже работает
Evgenii Elchev
С остальным можно что то придумать
Evgenii Elchev
Ты сам пробовал? с какими проблемами столкнулся?
vasilich
Пробовал) С path_provider нужно танцевать. Но решение с костыльком есть. flutter form bloc пакет крешится потому что юзает внутри кейбоард визибилити пакет, который с виндой не работает
vasilich
Смотря что имеется ввиду) Запросы ходют) Плагин connectivity не работает
Павел Середа
решил попробовать выполнить flutter config --enable-linux-desktop, увидел привычный месадж: A new version of Flutter is available! и чёрт меня дёрнул полезть глянуть коммиты! Такое ощущение что этот флаттер пилят школьные подельщики: почему так часто релизы? Зачем так мало изменений называть релизами?
vasilich
А как ты себе втянешь изменение без релиза?
Dmitry Bubnenkov
какой паттерн мне использовать для генерации внутри класса доп подклассов, чтобы туда JSON смапить
Evgenii Elchev
Ну оно примерно так и есть) серьезные дядьки заняты серьезными вещами)
Павел Середа
вообще-то с гита всё и так тянется, релизы могут подождать более значимого вклада в проект
Evgenii Elchev
Я запросы имел ввиду, спасибо
Evgenii Elchev
А ты это на какой ветке сделал?
vasilich
Не вижу разницы)
Павел Середа
а не подскажите, вменяемые ченджлоги где-то ведутся?
Evgenii Elchev
Ну так это на тот мастер) не релиз же ветка)
Павел Середа
спасибо, буду теперь представлять с какого качества поделием имею дело)
Vasily Laushkin
как они вообще смеют коммитить в мастер?
vasilich
Если бы только ченджлог был проблемой) И без него головных болей хватает
vasilich
Мутные типочки. Что-то втихаря напихают...
Vasily Laushkin
А есть где-нибудь статистика насколько разные каналы популярны? Сколько народу на мастере сидит?
Sergey Hottabych
Вообще-то да, у них чуть ли не каждый день релизы пошли, при этом ничего особо нового нет
Sergey Hottabych
Только и обновляю постоянно
Nikita Domnitskii
это хотфиксы называется
vasilich
Не встречал такой.
Nikita Domnitskii
30 июня последняя версия, вы о чем вообще
Nikita Domnitskii
[
{
"type": "link",
"text": "https://github.com/flutter/flutter/wiki/Changelog"
}
]
vasilich
Я думаю имеется ввиду чехарда релизов в дев, бета, мастер ветки в общем.
Павел Середа
v1.20.X три багофикса - оп, релиз! v1.19.X без изменений - оп, релиз!
vasilich
Орнул с подробностей)))
Павел Середа
v1.17.X Renames CupertinoFullscreenDialogTransition's animation to primaryRouteAnimation - оп, релиз!
Павел Середа
найс изменение
vasilich
Не исключай того что в эти ветки выходят релизы после внутренних изнурительных тестов... А сырой мастерок уж как есть.
Павел Середа
читайтедокументацию (ц)
Nikita Domnitskii
брэйкин чейндж
Nikita Domnitskii
они недавно релиз сайкл поменяли же
Nikita Domnitskii
не втянулись ещё
Artem
[
"Добрый день, подскажите пожалуйста, я только учусь, почему ругается на super.initState(); ?\n\nclass HomePage extends StatelessWidget {\n String videourl = \"xttps://www.youtube.com/watch?v=fUv9gO8t8b4\"; //Урлу подправил, чтоб не мешала\n YoutubePlayerController _controller;\n ",
{
"type": "mention",
"text": "@override"
},
"\n void initState() {\n\n _controller = YoutubePlayerController(\n initialVideoId: YoutubePlayer.convertUrlToId(videourl),\n );\n super.initState();\n }\n//...\n}\n\nХочу в свою страницу, видео вставить. \nСпасибо."
]
vasilich
Та и буй с ними с теми ченджлогами) Между ведением ченджлогов и фиксом одного дополнительного бага - я выберу второе)
Павел Середа
опасный ты человек, всем же известно что один починенный баг порождает 5 новых Kappa
Nikita Domnitskii
у стейтлеса нет инитстейта
vasilich
Смотря как тесты написаны. Ну и с такой философией только ченджлоги и остаётся вести ;-)
Artem
АА, понял. Спасибо. А как переделать, чтоб тоже самое было, толькоко работало?
Павел Середа
это даже я знаю: Stateless поменять на StateFull
Павел Середа
StateFull или Statefull? Кто по памяти помнит?)
Artem
спасибо, с этим еще путаюсь. буду разбираться.
Artem
блин... кажись оно в один клик сделалось ))))
vasilich
ИДЕ позволяет трансормировать Стейтлесс в Стейтфулл в один клик)
Artem
да, только недавно изучаю, пока сложно... но иде, помогает капец как сильно! На пхп иде особо и не нужен...
Evgenii Elchev
Вот тут ты сильно ошибаешься)
Artem
нужен, нужен. Беру свои слова назад )
Igor
Смотря как и что писать
Пашка
подскажите, как могу отслеживать изменения темы? themeMode стоит ThemeMode.system.
Daniil Kolyasnikov
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/58260648/how-to-listen-for-changes-to-platformbrightness-in-flutter"
}
]
vasilich
[
"Поднатужтмся лайком, пожалуйста.\n\n",
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/50713"
},
""
]
Eugene
Кто-нибудь знает, как на SelectableText повесить листенер, чтобы знать, что выделил пользователь
Andrew Ka
[
{
"type": "link",
"text": "https://youtu.be/MHfjBjoZypA"
}
]
Андрей Никулин
Здравствуйте. Может кто подсказать по подписанию пакета во flutter дебажным ключом?. **** adb: failed to install [Тут путь]/build/app/outputs/apk/app.apk: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl415053979.tmp/base.apk using APK Signature Scheme v2: SHA-256 digest of contents did not verify] **** Получаю такой выхлоп на реальном устройстве, на эмуляторе запускается без проблем. Как я понимаю проблема в том что подписывается v1 а надо v2?
Mike
Привет чат. А биометрия только в однопользовательском режиме работает? Или все же есть способы отличать одного пользователя от другого по заданным отпечаткам(аналогично Windows Hello)?
Daniil Kolyasnikov
А где есть многопользовательская биометрия ?
Mike
Хотя проще уведомления о входе прикрутить и стандартно пинкодами разрулить, наверное
Daniil Kolyasnikov
Я бы не стал использовать flutter для винды пока-что
Mike
Речь не про Винду, а про андроид )
Daniil Kolyasnikov
А где ты видел мультиюзера для android ?
Mike
Ну сам мульиюзер в Андроиде есть
Mike
Хотя наверное из аппов доступа к списку нет
Daniil Kolyasnikov
Забавно, никогда не видел такого
Mike
На планшетах часто используют
Daniil Kolyasnikov
Сильно давно фича появилась ?
Daniil Kolyasnikov
крч, тебе на выходе для такой авторизации только bool. Пользователя определить нельзя, но мне кажется, что в мультиюзере реализовано на уровне ОС. Т.е. человек со своим отпечатком сможет авторизоваться только под своим пользователем.
Mike
Печально. Ладно тогда пин-код+штрих-коды+ уведомления:)
Sergey Kuz
вопрос по авторизации (без firebase) должен ли я хранить данные пользователя в каком то local storage чтобы пользователю не приходилось заново авторизовываться и как я должен защищать эти данные ? а так же обновлять
Sergey Kuz
[
{
"type": "mention",
"text": "@ThisUsernameIsInvalid"
},
" спасибо гляну"
]
Vadim Rustamov
Яндекс такси для водителей например:)
Vadim Rustamov
Я ютубе есть выступление от лида команды разработчиков. Рассказывает почему выбрали его, с чем столкнулись итп
Vladimir
[
"Всем привет,\n\nфлаттер начал кидать ошибку при попытке сгенерить файлы для JSON \n\nFailed to precompile build_runner:build_runner:\n.pub-cache/hosted/",
{
"type": "link",
"text": "pub.dartlang.org/build_resolvers-1.3.7/lib/src/resolver.dart:332:7"
},
": Error: The setter 'useSummary' isn't defined for the class 'FolderBasedDartSdk'.\n - 'FolderBasedDartSdk' is from 'package:analyzer/src/dart/sdk/sdk.dart' ('.pub-cache/hosted/",
{
"type": "link",
"text": "pub.dartlang.org/analyzer-0.39.12/lib/src/dart/sdk/sdk.dart"
},
"').\n\nкеши чистил не помогает, кто-то сталкивался с подобным?"
]
Davit Arakelyan
Привет, рад за сообщества, видно оно помогает :) У меня просьба, помогите найти работуйшый код на Flutter, с Firebase Authentication на email/password, после чего работает средства ввода данных и чтение с Firestore P.S. Буду очень признателен, просто по документации ничего не работает
Vladimir
[
"точно не знаю в каком видео но вот этот чувак делал авторизацию через firebase - ",
{
"type": "link",
"text": "https://codewithandrea.com/"
},
""
]
Davit Arakelyan
а другие варианты?? друзья, authentication это базовый, всем оно нужно. я убедился что не нашел здесь практичное решение
Vladimir
хз, под рукой ничего нет, в видосах видел, думаю не сложно будет нагуглить и потом повторить там что-то в районе парочки действий пакет, включить настройки кусок кода
?? Назар Калитюк
настолько базовый, что можно и самому по доке написать
Davit Arakelyan
знал что такой ответ будет, и по этому написал в начале, что доке не работает. там другие версии, или что то, пробовал не то ,, в доке написано фрагменты, а по ссылке переходишь на GitHub, совсем путаница, куча кода с ошибками ..
Davit Arakelyan
я пробовал так, из несколькими видео на Ютубе, но опять ошибки, firebase не отвечал, потом google service
|