Программирование : Dart & Flutter по-русски
Alexandr Drobyshev
ChangeNotifyProvider(create: (context) => AppTheme(), child: ...)
Alexandr Drobyshev
ну или просто. InheridWidget. если не юзаете провайдер
Vyacheslav
да, понял теперь, с провайдером. Спасибо!
Temurxon
всем привет есть вопрос где хранятся данные routes прописанные в MaterialApp ,я имею в виду можно ли как то проверить существует ли namedRoute?
Temurxon
по заданому имени
Eldar
[
"могу только ссылку кинуть ",
{
"type": "link",
"text": "https://www.youtube.com/watch?v=5atLUFlfmXk"
},
""
]
Eldar
тоже в будущем предстоит
prz
[
"господа,можно ли как-нибудь в данной конструкции ( или как-то иначе ) сделать на кнопке вывод нескольких строк текста?\nchild: FlatButton(child: Text(",
{
"type": "link",
"text": "snapshot.data"
},
"[index].subject ,\nonPressed: () {\n\nнужно с новой строки вывести несколько элементов\n",
{
"type": "link",
"text": "snapshot.data"
},
"[index].subject\n",
{
"type": "link",
"text": "snapshot.data"
},
"[index].address\n",
{
"type": "link",
"text": "snapshot.data"
},
"[index].id"
]
Makhmud Ushamiev
Column юзай
Vyacheslav
у тебя параметр child может принимать любой виджет, что душа пожелает. Оберни нужные элементы в Column и выведи
Temurxon
может несколько кнопок ?
Temurxon
если много лучше ListView.builder
Yaroslav
О, спасибо огромное. В ютубе даже не додумался посмотреть??
prz
дык я и делаю это в листвью )
prz
листвью функцию с запросом выполняет и выкатывает список кнопок ( предположим статей )
prz
каждая кнопка - переход на статью
prz
но на кнопке нужно вывести заголовок,категорию,название,дату и т.п
Vyacheslav
FlatButton(child: Column(children: ListView(....
Temurxon
для button child
Bekhzod Eshqo'ziev
кто знает flutter FormArray
.Pasha Kruzenshtern
А зачем его передавать в контекст? В плане, если просто статичный класс определить и его импортить, чем-то отличается подход?
Alexandr Drobyshev
[
"что значит хранит? ка кто подругому делаете? не так?\n",
{
"type": "link",
"text": "https://flutter.dev/docs/cookbook/navigation/named-routes"
},
""
]
Alexandr Drobyshev
вот и хранит
Temurxon
string проверять named route
Temurxon
и по нему exception
Alexandr Drobyshev
ну статик стараюсь не юзать уже лет 15 и удобно подписаться с помощью. watch. на то чтоб если изменились данные - перерисовать виджет
.Pasha Kruzenshtern
Попытаться пушнуть и словить exception? ??
Илья Маненков
Ребята посоветуйте хорошую либу для получения списка контактов с телефона, под Android Ios , может кто пользовался, по возможности удобную
Sergey
Какой хоткей чтоб посмотреть доступные override методы в текущем классе от родителя ? VS code
Анатолий
ctrl + shift + U
Sergey
у меня только debug консоль скрывается при этом
Анатолий
штош, я еще напомню что существует очень много редакторов
Eldar
Ребя где в теме сидит цвет тени АппБара ?
Никита Обрывков
всем привет,начинаю постигать flutter по не многу,и такой вопрос,у меня на экране должно быть аватарка,имя,должность(это я сделал),а под этим всем идти recycler/list view,и проблема в том что у меня это не получается,я не могу вставить лист в тело Scaffold,а если каким-то костылём и получается,то не отображается
Igor
в консоли есть что-то?
Никита Обрывков
нет,ни ошибок,ничего
Dmitry
Всем привет. У меня на локалке поднят сервер с апи. И вот я играюсь с pwa и не смог авторизоваться в приложении. После понял что я с эмулятора не имею доступа к домену апи. Подскажите как это исправить?
John Travolta
так а лист как вставляется? в чилдрен Колумна/роу?
Павел Середа
а логи у себя на стороне сервера посмотреть можно?
Никита Обрывков
я экспериментировал,вставлял в чилдрен колумн(в котором у меня и находятся сейчас аватарка с текстами),пытался и просто в тело вставлять,в общем перепробовал многое,гугл решение тоже не выдаёт
Eldar
Ребя почему клавиатура в TextField может быть не с большой буквы ?
John Travolta
а если замокать данные, то все вставляется? Может асинхронно что-то доходит позже, чем оно рендерится в скаффолд?
Dmitry
а через домены никак? Там целая куча сервисов. Получется придется каждый подывать на localhost:port
Никита Обрывков
я довольно долго выжидал и перезапускал приложение
Анатолий
ну ты домен указыаешь где-то в конфиге? вот укажи айпи вместо домена с портом, какая раз ница что указано в поле конфига?
John Travolta
попробуй замокать данные, тупо хардкод засунуть в скаффолд, может иерархия виджетов нарушена если все ок, то может в консоль кинуть то, что приходит (аватарка), можно кинуть в консоль перед return Scaffold что-то и посмотреть что раньше придет в консоль, если то, что ты вывел до return Scaffold, то очевидно, что асинхронно данные доходят позже рендера, если наоборот, то вообще хз, надо дальше думать
Dmitry
там nginx и виртуальные хосты. Я не думаю что там порт привязан к домену.
Анатолий
сложно ответить на вопрос когда понятия не имеешь что там работает и как
Dmitry
понял. Ладно, пока для теста каждый микросервис запущу отдельно через php сервер. Там оно как раз и выдаст под каждый свой порт. Главное чтобы оно понимало что localhost это как раз таки моя ОС, а не что-то внутри андроида.
Анатолий
локалхост он будет понимать как что-то внутри андроида
Serge Shkurko
используй ip пк с сервером внутри локальной сети 192.168.x.x
Пашка
хз как к локальной апи обращаться
Dmitry
понял, попробую ещё такое
Пашка
найдёте решение отпишите всем
Анатолий
выше 2 человека отписали решение, использовать айпи а не домен
Dmitry
разве что брать ngrok и шарить в сеть локальные проеты
Serge Shkurko
если не прокатит попробуй выключить брэндмауэр винды и повторить
Serge Shkurko
он иногда может блокать запросы
Alexander Maslov
[
{
"type": "link",
"text": "http://xip.io/"
},
" + certbot"
]
Dmitry
ну я понял о чем ты
Никита Обрывков
если в скафолд пихать,то получаю: Positional arguments must occur before named arguments. Try moving all of the positional arguments before the named arguments
Dmitry
интересно. Ну я же говорю что нужно как-то в сеть бросить. Ранее я такое делал через ngrok.
Dmitry
может это не одно и тоже Но что там с сети доступ, что здесь
Alexander Maslov
[
"ну через ",
{
"type": "link",
"text": "xip.io"
},
" оно напрямую в локальные ip будет стучаться, а не через туннель, что чуть быстрее работает + точно не будет проблем со всякими веб-сокетами и прочей дичью (хотя хз как там с этим у ngrok)"
]
Анатолий
сервер еще этот домен должен принять, иначе выдаст дефолтные настройки и не факт что они указывают туда куда нужно
Dmitry
тоже не знаю. Ладно всем спасибо за наводки) пойду пробовать.
Alexander Maslov
тоже верно, но если что-нибудь типа ror / django / node.js напрямую без реверс-прокси торчит - то всё ок должно быть
Dmitry
да не, такого не получится. Это нужно будет подставлять порты и чтобы на локалке оно на портах работало.
Анатолий
просто укажи айпи своего компа и порт на котором сервис висит, это простейший вариант наверное
John Travolta
ага, ну ты используешь то, что еще не инициализировано
Dmitry
если советы с localhost + порт прокатят то это будет по результату одно и тоже в моем случае
Анатолий
локалхост не используй, тебе нужен внешний айпи компа
Никита Обрывков
инициализацию я понимаю,а вот как это происходит в моём случае,не до конца)
John Travolta
[
"попробуй разобрать тут код и сравнить со своим\n",
{
"type": "link",
"text": "https://stackoverflow.com/questions/58055590/positional-arguments-must-occur-before-named-arguments-too-many-positional-ar"
},
"\n\nIf you wanna pass something in your SecondScreen() constructor , you must have to defined constructor inside your SecondScreen class."
]
Dmitry
Извиняюсь, скорее всего стикеры нельзя здесь
Sanek Sanek
Всем привет , кто-то имел дело с библиотекой tdlib, клиент апи телеграмма? Как там получить список чатов , буду благодарен))
Анатолий
[
"если у тебя сервисы на пхп можешь их насильно поднять на разных портах доступных наружу:\n",
{
"type": "code",
"text": "php -S :"
},
" и если укажешь внешний айпи, то сервис будет доступен извне по этому порту"
]
Dmitry
да я так и планировал
Пашка
вам проще открыть апи телеги
Dmitry
всё равно это так ... чисто от нечего делать сижу играюсь
Анатолий
[
{
"type": "link",
"text": "https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1chats.html"
}
]
Никита Обрывков
ага,я кое-что понял,если я сразу в тело вставляю list,то да,всё норм,оно работает,но тогда я уже не могу вставить контейнер или child/children
Анатолий
[
{
"type": "link",
"text": "https://github.com/tdlib/td/blob/master/td/generate/scheme/td_api.tl#L3727"
},
" а вот непосредственно метод"
]
Никита Обрывков
у меня остальной контент(аватарка,имя) в контейнере было) я думаю может я как-то не правильно компаную,ведь если по отдельности всё работает,а всё вместе - нет
John Travolta
может, сложно сказать не видя ничего но попробуй оборачивать в разные виджеты, вначале пробуй замоканные данные, с ними проще работать, потом реальные
Sanek Sanek
Я просто не могу понять как вызвать этот метод , потому что он возвращает такой же объект GetChats
Анатолий
для начала самое интересное: язык, библиотека )
Анатолий
я без понятия каким из биндингов ты пользуешься
Никита Обрывков
вот так у меня примерно всё выглядит,если ставить в body в самом начале list.builder,но он работает,но дальше ни child,ни контейнер вставить нельзя
Sanek Sanek
Библиотека tdlib 1.4.0 , язык Dart , Flutter
Анатолий
а библиотека? или ты вызываешь с методы?
Анатолий
вообще он должен тебе Chats класс возвращать, предидущую ссылку я килад
Анатолий
у которого есть метод chats()
Анатолий
не, вру, то конструктор
John Travolta
т.е. ты хочешь, чтобы был твой лист и потом еще что-то? А если в бади вставить лист, то все ок, но если в колумн рядом с Text, то не работает? Может это потому, что children принимает тип Widget, а ты возвращаешь лист
Никита Обрывков
сначала да,информация о пользователе(в треть экрана примерно),а ниже список
Sanek Sanek
Я просто не понимаю как его правильно вызвать)) потому что он принимает параметр чатлистс куда я так понял записывается объект чатлистс
John Travolta
ну скорее всего это из-за того, что children содержит массив , а у тебя получается один из чилдренов - оберни свой лист в Column там, где ты его создаешь, чтобы в children попал Column с твоим листом
Анатолий
ты вызываешь getChats, он тебе возвращает Chats и дальше ты не знаешь что делать?
Анатолий
[
{
"type": "link",
"text": "https://github.com/tdlib/td/blob/master/example/cpp/td_example.cpp#L119"
}
]
Анатолий
у них пример есть
Vadim Popov
Ребят подскажите пожалуйста, как можно выключить скрол если начинаешь листать с определенного виджета?
Vadim Popov
есть рисовалка, и вот по нажатию на неё нужно чтобы не был скролл а работало рисование) экран обёрнут в singleChildScrollView
Sanek Sanek
Нет, я вызываю GetChats() который возвращает объект GatChats)
Анатолий
если не скажешь что ты используешь, помочь будет сложно, реализации биндинга могут отличаться
Dmytro Hnatkivskyy
всем привет! все-таки не нашел ничего годного по трекингу локации на background ?? можеш все же кто-то имел дело с етим? меня интересует как ios так и андроид
Dmytro Hnatkivskyy
я читал еще о isolate но все же может есть решение более популярное
Sanek Sanek
[
{
"type": "link",
"text": "https://github.com/i-Naji/tdlib"
}
]
Kirill Aparin
[
{
"type": "text_link",
"text": "Смотри Navigator 2.0",
"href": "https://www.youtube.com/watch?v=Hf85t1zoedY"
},
" (время: 12:07)"
]
Анатолий
там не на евентах все построено? ты отправляешь евент на получение списка, он тебе возвращает список отправляешь евент на подключение к чату, он возвращает его инфо итд?
Анатолий
[
{
"type": "code",
"text": "await send(GetChats())\n"
},
"и потом ждешь евента со списком чатов (класс будет тот же)\n",
{
"type": "pre",
"text": "switch (event.getConstructor()) {\n case GetChats.CONSTRUCTOR:\n // тут будет доступен список чатов в этом классе\n}",
"language": ""
},
""
]
Sanek Sanek
Спасибо огромное, теперь все понял))
Dmitry Bubnenkov
Почему КастомПэинт рисуется одно над другим, а не в Row
Анатолий
а что у тебя внутри паинтера?
Dmitry Bubnenkov
Вот такая штука
Анатолий
странно что он у тебя нарисован вторым попорядку а в ряду указан первым
Dmitry Bubnenkov
Вот я тоже не понимаю и почему один над другим... а не по горизонтали
Dmitry Bubnenkov
Offset же он не абсолютный, а внутри виджета. В данном случае внутри Row
Dmitry Bubnenkov
Есть какие-то идеи что можно попробовать?
Анатолий
не, я тоже не понимаю что происходит )
Анатолий
может он у тебя под Row еще раз подключен?
Анатолий
тут под каментом
Константин Бобров
[
{
"type": "link",
"text": "https://pub.dev/packages/hive_listener"
},
" \nиспользовал кто?"
]
John Travolta
хреново, у меня пока больше нет идей может еще кто-то подскажет, я сам только неделю пишу на флаттере, могу многого не знать Чуть позже закинь снова свой вопрос, когда чат будет чуть менее активный, чтобы твой вопрос не потерялся
Константин Бобров
как можно получить высоту системных кнопок навигации?
Константин Бобров
для ListView
Константин Бобров
или как там его
Константин Бобров
или вообще не для него. сейчас не смогу посмотреть. в общем записи, которые внутри этого компонента, залезают за эти кнопки почему то
Константин Бобров
просто получить высоту необходимо для временного решения
Валерий
потому что safeArea нужно использовать
Валерий
иначе через пару дней начнете искать как высоту челки высчитать
Danila Manila
MediaQuery.of(context).padding.bottom может попробовать?
Константин Бобров
Спасибо, завтра попробую.
Danila Manila
[
{
"type": "text_link",
"text": "Вот тут можно поглядеть",
"href": "https://api.flutter.dev/flutter/widgets/MediaQueryData-class.html"
},
" ещё"
]
Константин Бобров
Благодарю
Валерий
ненадо?????? зачем вы городите велосипеды когда уже все придумано
Danila Manila
По поводу высоты системных кнопок?
Валерий
safeArea на это есть. как раз для того чтобы контент не лез в системные области
Анатолий
да, просто оберни все в SafeArea и будет тебе счастье
Danila Manila
Спасибо) все проще чем думал
IB Akhrorov
Здравствуете Есть такой метод в флаттере onDestroy() или applicationWillTerminate()?
Анатолий
[
{
"type": "link",
"text": "https://www.google.com/search?sxsrf=ALeKk001MdOUJe38AdIghZ2sgDoEQWapnQ%3A1610984312315&ei=eKsFYOfmEuOMrgTL-JfYCw&q=flutter+onDestroy&oq=flutter+onDestroy&gs_lcp=CgZwc3ktYWIQAzICCAA6BAgjECc6BAgAEA06BggAEA0QHjoICAAQCBANEB46CggAEAgQDRAKEB46BAgAEB5QrVlYzcsBYJ3OAWgEcAB4AIABkwOIAd4JkgEJMC40LjEuMC4xmAEAoAEBqgEHZ3dzLXdpesABAQ&sclient=psy-ab&ved=0ahUKEwjngrKd6KXuAhVjhosKHUv8BbsQ4dUDCA0&uact=5"
}
]
Анатолий
там сразу же будет ответ на твой вопрос
Анатолий
буквально в первых 3-х ссылках
Анатолий
я проверил перед тем как кинуть ссылку
IB Akhrorov
С помощью WidgetBinding я не смог узнать state когда app будет уничтожен
IB Akhrorov
Точнее там нет такого state
Анатолий
[
{
"type": "link",
"text": "https://pub.dev/packages/flutter_lifecycle_state"
}
]
IB Akhrorov
На ios не работает (
Анатолий
а зачем тебе это знать?
IB Akhrorov
Выше сами отправили ссылку
Анатолий
Выше сам отправил, а задача какая? нужно при закрытии приложения сделать?
IB Akhrorov
Удалить данные с базы
Анатолий
тоесть еще и приложение будет закрываться кучу времени если данных накопится?
Анатолий
хорошее приложение получится :)
IB Akhrorov
база это не только sql и это может быть shared preferences)
IB Akhrorov
Скажем удалить токен
Анатолий
да я понял, больше мест = больше времени, я думал что данные не удаляют, а они там нужны чтоб ими пользоваться постоянно
Анатолий
почему бы не хранить токен в коде а не в базе?
IB Akhrorov
Там такая бизнес логика
IB Akhrorov
Если клиент не заплатил и вышел с апп то временный токен удаляется
Анатолий
ну тогда придется не удалять в иосе этот токен, ибо судя по всему в иос нет такого евента
IB Akhrorov
На нативе есть же
Alexandr Drobyshev
[
"очевидно пока можно скрыть толкьо оба бара, с одним не работает\n",
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/62412"
},
""
]
Kit Khilobok
Зачем тогда его хранить в бд?
Анатолий
[
{
"type": "link",
"text": "https://github.com/flutter/flutter/issues/21982"
},
"\nНо я бы не хранил в бд токен до оплаты"
]
IB Akhrorov
Незнал что будет сложно с флаттером найти метод onDestroy)
Kit Khilobok
А причём тут флаттер
IB Akhrorov
Так сделаю теперь
Kit Khilobok
Его в нативе нет
Kit Khilobok
И это логично, что нет
Анатолий
проблема еще в том что этот метод скорее всего не даст делать то что ты хочешь
Kit Khilobok
Пони розовых, блин. Коллбэка такого
IB Akhrorov
applicationWillTerminate
IB Akhrorov
Есть такой метод
Егор
Похоже на то. Спасибо.
IB Akhrorov
Я про того что сохранить токен после успешной оплаты
Анатолий
"asynchronous operations cannot be executed here properly"
|