Программирование : Dart & Flutter по-русски
Vitalii Ishkevych
Можно здесь эту авторизацию как-то удалить но что-бы я сейчас смог заново залогиниться?
Vitalii Ishkevych
Delete, я смогу ещё раз зарегистрироваться?
Kit Khilobok
Можно как-то удалить >Delete
Kirill Aparin
[
"Как с помощью \n",
{
"type": "code",
"text": "Client httpClient"
},
" \nОтправить файл на сервер?"
]
Kit Khilobok
Смотреть в сторону FormData
Vitalii Ishkevych
[
{
"type": "link",
"text": "https://pastebin.com/eirMQ9xi"
}
]
Kit Khilobok
Или если изображение, то его можно в base64 гнать
Kit Khilobok
Тут от сервера зависит
Kit Khilobok
А фаербейз в принципе подключен? Все шаги из инструкции сделали?
Vitalii Ishkevych
Да. В Authentification запись появляется а в firestore нет
Kit Khilobok
А то оно судя по логам его найти не может В грэдле гугл сервисы и фб есть?
Kit Khilobok
(Я точно не помню, что там должно быть, в офф инструкции всё есть, я просто один раз сделал в темплейте и его клонирую)
Kit Khilobok
А точно, это же у дио штука
Vitalii Ishkevych
Это довольно старое приложение, но код переписать не смогу
Kirill Aparin
MultipartFile?
Kit Khilobok
Да, оно в дио есть
Kit Khilobok
Вообще в голом хттп тоже должна как-то форма отправляться
Vitalii Ishkevych
Может быть проблема в том что этот код подходит для flutter v1.x а для v2.x нет?
Kit Khilobok
Проблема в несоответствии версии кора, которую ты подключаешь во флаттере и пакетов, которые прописаны в грэдле, с очень большой вероятностью
Vitalii Ishkevych
Ну смотри, это приложение есть на гите, когда я его скачивал я его запустил и оно работало. А я создал новый проэкт и пишу постепенно его. А где прописано подключение кора? Я бы проверил версии
Артур
Ребят, а я при тапе на гестур детектор получаю какие-небуть аргументы
Kit Khilobok
Странный вопрос, для ответа на который достаточно просто посмотреть на код, но нет, никаких аргументов там нет Коллбэком там идёт VoidCallback, те Function()
Kit Khilobok
(это если говорить про onTap)
Evgenii Elchev
зависит от гестуры)
Evgenii Elchev
есть pan, вот она много чего получает, движения пальца, начало, конец касания и вот это все
Vitalii Ishkevych
[
{
"type": "mention",
"text": "@Belokotov"
},
" А я могу скачать с гита приложение и заменить только файл google-services.json на свой и оно будет работать с моей БД?"
]
Vitalii Ishkevych
Это хорошая для меня новость)
admin
Всем привет! Народ подскажите пожалуйста, ситуация такова. Изучаю flutter не давно, и не могу понять как правильно выстраивать дерево виджетов, может кто-то знает хорошую статью или видео. Заранее благодарю.
nikto _b
[
{
"type": "link",
"text": "https://habr.com/ru/post/433256/"
}
]
Vitalii Ishkevych
У меня компилилось и всё работало. Так что я думаю поставлю себе flutter 1.x тот с которым создавалось приложение что на гите и проблем быть не должно
nikto _b
[
"у GestureDetector есть колбэки и с аргументами и без\nнапример, ",
{
"type": "code",
"text": "onTapUp"
},
" выдаст TapUpDetails аргументом"
]
Vitalii Ishkevych
Что именно интересует? Не понял вопроса
Tymofii Nazar
[
"Может кому интересно - стартанула Flutterista конфа в ютубе (похоже с женским уклоном) ",
{
"type": "link",
"text": "https://www.youtube.com/watch?v=BsX9t69lKVw"
},
""
]
Vitalii Ishkevych
Какой апп?
Vitalii Ishkevych
Магазин одежды. Мне на диплом нужно)
Alex Wow
я удаляю его достаточно просто, ору. Нашел у себя в коде и реализовал. хз сделал ты или нет
nikto _b
ребят, хочу в релизной сборке получать строку с последним коммитом как это реализовать? есть может какие-то хуки или что-то эдакое?
nikto _b
есть job для CircleCI на сборку сводится к flutter build apk --release --no-sound-null-safety может строку можно передать в аргументах, а сформирую я её уже в процессе сборки...
nikto _b
хотяб так чтобы не менять каждый раз version в pubsec.yaml
nikto _b
а его можно хотяб переопределить аргументом?
Egor Malyutin
Привет. А можно в gesturedetector каким-то образом отменить событие для дочернего виджета?
Egor Malyutin
Или не в gesturedetector
Egor Malyutin
Хочу, допустим, чтобы в дочерних виджетах не работал onTap, а всё остальное работало
nikto _b
Это в любом случае придётся вынимать коммит и что-то переопределить И вопрос именно в переопределении Как раз на экшнсах и собираю, хочу прикрутить
Дмитро Квик
Может кто-то сталкивался, появилась необходимость задать тень вокруг ClipPath, внутри ClipPath стак с инквеллом. Тень подсмотрел в пакете ClipShadow, но вылез косяк - она блокирует тапы :( можно ли как-то сделать ее прозрачной для тапов, или нужно дублировать инквелл и на тень?
Kirill Bubochkin
в смысле, вы хотите номер версии автоматически подставлять при сборке?
Kirill Bubochkin
а, точно
Kirill Bubochkin
вы хотите номер версии автоматически подставлять при сборке?
nikto _b
да писать что-то в духе myOwnVer-000
Kirill Bubochkin
[
{
"type": "link",
"text": "https://flutter.dev/docs/deployment/android#updating-the-apps-version-number"
}
]
nikto _b
спасибо странно что в хелпе этого не было
????? ILyos >
привет всем как в firebase дать доступ одному коллекшину всем юзерам(авторизированным) но только у некоторых там роль будеть админ и чтоб у них в этом коллекшине показались все данные, а у обычных юзеров не все данные
Nurassyl Nuridin
[
"Всем хай! Чем отличается TextEditingController _controller; а потом в теле ",
{
"type": "mention",
"text": "@override"
},
" \n void initState() { \n _controller = TextEditingController(); \n super.initState(); \n } от сразу инициализации во время обявления переменного: TextEditingController _controller = TextEditingController()????"
]
d
В initstate будут доступны остальные члены класса, например, можно будет референсить widget. Снаружи - нет
Kirill Bubochkin
насколько я помню, никак. Надо разделять на разные collections
????? ILyos >
а как их потом соединить? ну обычные пользователи тоже туда(в документ) должный писать а админы изменить данные
Kirill Bubochkin
они могут писать, но не могу читать?
Maksus
Ну нужно айдишники всем раздать, админскому ацдишнику все данные, другим не все)
????? ILyos >
два дублеката держать?
Kirill Bubochkin
зачем дубликаты, просто 2 коллекцииб условно в одной будет {“id1”: {“safeField1”: 1, “safeField2”: 2}}, в другой {“id1”: {“dangerousField1”: 100}} У админов доступ к обеим коллекциям, у юзеров к одной. На стороне админского клиента можно эти данные объединить в одну модель по id
????? ILyos >
ну приложения для записи в очередь на получения заказа а админы должны добавить свои данные об учреждения и как только они добавлять, это учиреждения должно появляться обычным юзерам и они могут туда в очередь записаться в то время админи должны контролировать очередь(сколько пришло сколько ушло когда...)
Nurassyl Nuridin
Ок, спасибо!
Nurassyl Nuridin
Вопрос, а можно все Providers применять как синглтон классы вместо использование их через Providers? Например для настройки уведомлении и главных настроек мне удобно эти классы сделать синглтонами. А через Provider все не так работает как мне хотелось бы????
Kirill Bubochkin
Я бы однозначно не рекомендовал. Что именно работает не так?
Nurassyl Nuridin
Первоначальная загрузка всех сохраненных настроек из sharedPref. Измененные настроики отображаются после того как перезашел на страницу настроек. А так он сразу грузить дефолтные настройки, которые я поставил чтобы не был null-ов ни в одном значении. И главная причина того что мне удобно все в синглтон держать то, что в main я заранее могу подгружаю все настройки до runApp(). Вопрос: а чем плох синглтон классы? У меня например общие настройки, настройки уведомлении, авторизация и PaymentService все как синглтоны.
Alex Wow
Делаешь центр - столбец ( центр текст)- (центр картинка ) и тд
Nurassyl Nuridin
Дай всем контейнерам height: MediaQuery.of(context).size.height умноженные на процентное соотношение
Alex Wow
Ну я перепутал или так
Nurassyl Nuridin
Ну заранее Скаффолд и так и у тебя весь экран занимает же
Kirill Bubochkin
[
"А в чем проблема загрузить настройки и передать их в провайдер до runApp, не делая провайдер синглтоном?\n\nСинглтон, на мой взгляд, это почти всегда анти-паттерн, поскольку теряется контроль над временем жизни объекта, может поползти архитектура, если начнут обращаться напрямую к синглтону вместо нормального доступа через ",
{
"type": "link",
"text": "context.read"
},
" и т.д."
]
Nurassyl Nuridin
Мультипл скаффол на один скрин не советую запутаешься в контекстах (context)
Nurassyl Nuridin
Ну так провайдеры всех классов добавляешь же уже в runApp через MultiProvider() Как мне обратиться к провайдерам классов в теле main?
Kirill Bubochkin
ну создать-то экземпляр можно и в main, и передать его в App
Kirill Bubochkin
т.е. в приложении будет 1 общий инстанс, но это быдет обычный инстанс, не синглтон
Nurassyl Nuridin
Скафолду если я не ошибаюсь позицию не можешь задать
Nurassyl Nuridin
То есть, если я правильно понял Вас, то в мейн создаю например settings = Settings() потом отправляю в runApp, где в ChangeNotifierProvider( create: (_) => settings, ), пишу???
Kirill Bubochkin
да, только вместо create будет ChangeNotifierProvider.value(value: settings)
Nurassyl Nuridin
Ну я бы еще предложил через Expanded и с помощью параметра flex сделать, но я сам нормально не понял в каких ситуациях его используют вроде только внутри Column и Row поэтому не подойдет! Но это нужно проверить
Nurassyl Nuridin
Ок попробую так сделать. Значит от синглтонов вообще лучше отказаться и не применять?
Nurassyl Nuridin
Ну потом нужно будет все паддинги потестировать на все размеры экрана поэтому я предлагаю сделать через соотношение size.height и проценты
Vladislovious
Товарищи, вопрос: В виджете использую класс ,который описан в состоянии StateFull виджета, В нём вызываю некий метод Update() который изменяет поля класса. Помещаю этот вызов в setState, изменений на UI не происходит, хотя поля этого класса беру для отрисовки. Значения в поле обновляются. Нажимаю повторно, UI обновляется. В чем может быть проблема?
Vladislovious
Ок, решил вопрос, но всё колхоз какой то. Как переписать вот такую конструкцию?
Vladislovious
В setState await не затащить
Nurassyl Nuridin
А как main у вас выглядит?
Nurassyl Nuridin
Column внутрь SingleScrollView нужно засунуть просто там несколько пикселов в экран не помещается
Nurassyl Nuridin
Кирилл, а можно вопрос? Если два класса в провайдере (Не стейтлесс и не стейтфул класса) как обращаться друг к другу через провайдер? Если там нету доступа к контексту?
Kirill Bubochkin
Если один класс зависит от другого, то просто обычно он и передается классу в качестве зависимости. Если оба класса взаимно зависят друг от друга, то обычно это говорит о неудачной архитектуре. Можете пример привести?
Maksus
А есть пример как два класса зависят друг от друга?
Kirill Bubochkin
[
"класс ",
{
"type": "code",
"text": "A"
},
" использует методы класса ",
{
"type": "code",
"text": "B"
},
", а класс ",
{
"type": "code",
"text": "B"
},
" использует методы класса ",
{
"type": "code",
"text": "A"
},
"."
]
Maksus
А если мы переопределяем методы?
Kirill Bubochkin
я не совсем понял, в чем вопрос. Я про взаимное использование говорил чисто в контексте передачи зависимостей, и что так делать не стоит. Переопределение методов тут не играет никакой роли, это же не про наследование.
Mansur Mansur
Добрый день! Кто нибудь посоветуйте ресурс! Что бы освоить работу с firebase
Maksus
Ну как передача зависимостей да, видимо я не правильно понял
Kirill Bubochkin
в firebase куча всего. Для начала – официальная дока, а потом уже искать информацию по конкретной теме
Nurassyl Nuridin
Например у меня есть класс Products и там чтобы добавить в сервер Продукт в этом классе проверяю Авторизацию (auth != null) типа. В данном случае в Products я использую Firebase Database RESTApi (Auth и Products у меня Provider-ы)
Kirill Bubochkin
провайдеры – в смысле они передаются через провайдеры? Т.е. есть что-нибудь типа Provider(create: (_) => Auth()) и Provider(create: (_) => Products()) ?
Nurassyl Nuridin
Если Кнопки не должны быть привязаны к картинке с текстом то можно через Stack и Positioned релизовать Кнопки эти
Nurassyl Nuridin
Точнее если я их сделаю Provider-ами (То есть по вашему совету, чтобы не использовать синглтоны)! А так в классе Products я через синглтон класс Autg проверял isAuth или нет.
Nurassyl Nuridin
[
{
"type": "link",
"text": "https://medium.com/flutter-community/a-deep-dive-into-stack-in-flutter-3264619b3a77"
},
" Ну примерно так можно"
]
Nurassyl Nuridin
В интернете куча примеров со Stack
Nurassyl Nuridin
Да еще и мне нужно токен авторизованного пользователся чтобы отправить в Firebase Database через RESTApi
Kirill Bubochkin
[
"Уточню, чтобы не путаться. синглтон – это не противоположность провайдеру. Если класс внедряется через ",
{
"type": "code",
"text": "Provider"
},
", то это не значит, что он сам провайдер.\n\nКасательно доступа, ну я бы сделал как-то так:\n\nfinal auth = Auth(); // или создается, или передается сам инстанс\n\nMultiProvider(\n providers: [\n Provider.value(value: auth),\n Provider(create: (_) => Products(auth: auth)),\n ],\n // …\n)"
]
Mansur Mansur
Спасибо! А что посоветуете по флатеру, книгу или курс
Kirill Bubochkin
[
"я бы опять же посоветовал начать с официальной документации ?? Проблема книг в том, что они устаревают довольно быстро. Из книг – я читал только эту – ",
{
"type": "link",
"text": "https://fluttercompletereference.com/"
},
" – на мой взгляд, довольно неплохая.\n\nА так – статьи, например, из Flutter Community на medium – ",
{
"type": "link",
"text": "https://medium.com/flutter-community"
},
"\n\nПо курсам ничего конкретного не смогу посоветовать ??"
]
Nurassyl Nuridin
Ок спасибо за разьяснение
?? ??????????????????????????
Можно придумать другую архитектуру, а вообще родитель рожает детей и отдает им ссылку на себя
Dmitry
аа ну т.е. я создаю родительский объект, у него дергаю какой-то метод, который создаст дочерние и отдаст им себя понял, спасибо
?? ??????????????????????????
Нет, ты делаешь родителя и отдаешь ему что нужно для рождения детей, он сам создаёт детей и отдает себя
?? ??????????????????????????
Методом тоже можно, и вроде даже имунно, но это модификация
?? ??????????????????????????
Лучше если метод возвращает другого родителя уже с потомками
Dmitry
аа ну точно, могу же в конструктор отдать
Mansur Mansur
Все понял! Огромное спасибо
?? ??????????????????????????
Пока книга пишется, пока проходит рецензию, пока её печатают, язык/стек/технология перестают существовать, либо трансформируются :)
Kirill Bubochkin
да это понятно, но мне, как потребителю, какая разница, из-за чего книга устарела
?? ??????????????????????????
Изложение книги это история, она полезна для развития но на практике нужно оперировать реалиями. Если хочется познать стек/фрейм читай последнюю редакцию документации
Kirill Bubochkin
нет, просто книги надо читать по таким вещам, которые не устаревают за несколько месяцев. Алгоритмы, структуры данных, паттерны, архитектура. Но книги по фреймворкам – такое себе.
?? ??????????????????????????
Даже просто список аисд в книге уже морально устарел
?? ??????????????????????????
Все техническое в книге просто история развития, фундаментальные науки устаревают реже и в последних редакциях можно урвать что-то актуальное, остальное можно выкидывать на помойку и читать авторов онлайн
Kirill Bubochkin
Я не понял, что вы хотите этим сказать. То, что книги по фреймворкам быстро устаревают и актуальных знаний в них мало – я с этим не спорил, и, в общем-то, это и говорил. Если то, что даже книги по “фундаментальным наукам” надо “выкидывать на помойку” – то категорически не согласен.
?? ??????????????????????????
Я не оспаривал, я дополнил своим взглядом)
Sergey
какой http клиент предпочтительнее сегодня во flutter? может либа какая становится стандартом, как retrofit в android?
Вадим Резниченко
[
{
"type": "link",
"text": "pub.dev/packages/http"
}
]
Вадим Резниченко
во всех проектах юзаю ее
Вадим Резниченко
кмк очень удобно юзать эту?? и работает везде
Mykola Shevchenko
В дарте тоже есть ретрофит
Семён undefined
в get недавно и свое решение в мир http клиентов внесли, даже графы поддерживаются
Вадим Резниченко
Как Мне Кажется
Daniil Kolyasnikov
а как в http клиенте используются графы ?
Mykola Shevchenko
А графкл разве не на гет/пост запросе построен?
Daniil Kolyasnikov
графы и graphql разные понятия
Mykola Shevchenko
А какие графы тогда в хттп?
Daniil Kolyasnikov
вот и я интересуюсь у человека как в хттп клиенте графы сумели применить
Семён undefined
я про graphql говорю
Семён undefined
у меня на работе их все называют графами, хз чем вам не угодил
Daniil Kolyasnikov
просто по твоим словам я понял, что они там изобрели как разложить запросы на графы и как-то их по особому парсят в соответствии алгоритмами поиска по графу.
Вадим
[
{
"type": "link",
"text": "https://ru.wikipedia.org/wiki/%D0%93%D1%80%D0%B0%D1%84_(%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)"
},
"\nпросто граф это не совсем graphql)"
]
nikto _b
а графкуэль это что-то из очередного "stop using molotok"?
Maksus
Графы - локальный жаргон программиста, отсылается к graph ql
Maksus
Поддержка графов означает поддержка graph ql
Daniil Kolyasnikov
Спасибо, я понял, когда еще сам семен объяснил
Maksus
Если вам так нравятся графы, можете помочь мне с алгоритмическим подходом к решению медиан, а то у меня курсач на носу ??
Daniil Kolyasnikov
Но вот поддержка графкл это поддержка графкл. Граф - это структура данных. Графкл - язык запросов. Нахера слова то придумали , ну ?
Daniil Kolyasnikov
Друг, уже занимаю очередь.
Maksus
Ну, он же сказал, это жаргон на их работе, поэтому он его употребляет в такой форме
Maksus
Будешь самым первым)
Daniil Kolyasnikov
Единственным я полагаю...
Maksus
А то инфы по алгоритмическим подходам не особо много, кроме Кристофера толком никого нет
Maksus
Особенно в поле медиан
Daniil Kolyasnikov
Нахождение медианы графа ?
Maksus
Алгоритмический подход
Daniil Kolyasnikov
Мое гуманитарное образование не понимает что такое алгоритмический подход
Maksus
Ну то есть найти медиану алгоритмом
Maksus
Вот и нужно найти алгоритмы, которые применяются к поиску р-медианы
Daniil Kolyasnikov
Дейкстра ?
Daniil Kolyasnikov
[
{
"type": "link",
"text": "https://studbooks.net/1173495/informatika/metody_nahozhdeniya_median_grafa"
},
"?"
]
Maksus
Не, такие алгоритмы я писал на плюсах ещё полгода назад
Daniil Kolyasnikov
Задача - найти алгоритм. Алгоритм расписан, даже 4.
Maksus
Задача: Алгоритмический подход к решению медиан в графе
Daniil Kolyasnikov
ты знаешь что такое алгоритмический подход ? Как ты в своей курсовой его определяешь ?
Maksus
Честно говоря не знаю что это, но тут вопрос не о простой медиане, а об р-медиане
Maksus
Я вот нашел книжку, взял оттуда методы списал, но маловато выходит, вот я и подумал, раз ты так беспокоишься о графах, то неплохо в них разбираешься, в теории графов
Maksus
А р-медианы - это не просто медианы, это кратные медианы.
Семён undefined
попробуй в column запихнуть: Spacer Widget Spacer Widget я правда не помню работает ли это так но логика подсказывает это
Yakov K.
Column(children: [ SizedBox(height: MediaQuery.of(context).size.height * 0.5), Container(), Spacer(), Container() ])
Yakov K.
А, так даже лучше
Yakov K.
Это нормальная практика в лейаутах, не костыль :)
Семён undefined
это фундаментально во флаттере
Семён undefined
есть ещё вариант запихнуть в stack первый элемент с Align center второй с Align bottomCenter
Yakov K.
А вот это уже немного костыльно :))
Семён undefined
ну за то буквально то, что он попросил
Yakov K.
[
{
"type": "mention",
"text": "@ursna1"
},
" так не стоит делать, страдает читабельность и элементы могут залезать друг на друга"
]
Fearless Cry
Column( —-Center ———Widget —-BottomWidget )
Ponao Eqv
Кто нибудь делал внутреннюю тень для BoxDecoration?
Ponao Eqv
Возможно ли это без оберток?
Семён undefined
Align это виджет, alignment это свойство
Maksus
Ребят, кто делал кастомный роут для смены эффекта переходов, покажите актуальный пример, а то у меня не работает, походу устарело, там ещё со свойством settings.isInitialState, благо нашел что теперь по нейму приходится, буду благодарен
Maksus
Копался в доках, не нашел живого примера
Alexander Ovchinnikov ??
Да если уж честно, любое ИТ - это болото, разве нет?..
Вадим Резниченко
почему болото то?
Alexander Ovchinnikov ??
А что не болото? Вот у нас с этим парнем две общих группы - эта и Kotlin. Никто из нас даже не знает будущее Dart/Flutter и Kotlin, это будущее даже связано не с технологиями, а с маркетингом.
Вадим Резниченко
никто не знает будущего вообще у любой вещи)
Вадим Резниченко
я понимаю что есть разные вероятности, но кмк флаттер хорошая вещь
Вадим Резниченко
и вряд ли ее забросят
Вадим Резниченко
она уже сейчас может покрыть любую хотелку, поэтому смысл ее не юзать даже если ее забросят?
Alexander Ovchinnikov ??
Dart держится на Flutter, забросят его - забросят и Dart. В итоге куча людей сейчас учит и использует язык программирования, который завтра может оказаться никому не нужным. Это не болото?
Вадим Резниченко
нет. и я выше объяснил почему
Вадим Резниченко
а даже если это болото, никто не заставляет туда лезть
Alexander Ovchinnikov ??
Так да, я согласен.
Alexander Ovchinnikov ??
Это был ответ Денису, что не только Diango болото, а как бы вообще всё
|