Программирование : Dart & Flutter по-русски
Kirill Aparin
[
"Есть ли способ проверить разрешение на отправку уведомлений?\n\nСейчас заблокировал на устройстве отправку уведомлений, а статус приходит\n",
{
"type": "code",
"text": "AuthorizationStatus.authorized\n\n"
},
" Использую ",
{
"type": "code",
"text": "FirebaseMessaging.instance.getNotificationSettings().authorizationStatus"
},
""
]
Урусай
permission_handler пакет
Глеб Гусаров
Всем привет, не подскажите какую кнопку использовать нужно чтобы при нажатии тень пропадала (как в RaisedButton) и возможность изменять цвет тени. Попробовал ElevatedButton там можно поменять цвет тени, но тень при нажатии не пропадает, а становится больше, и нет никаких настроек на это
Глеб Гусаров
Есть из коробки какое-то решение или придется писать свою кнопку?
Xghjhdjbfu
В ElevatedButton вроде есть проперти отключения тени
Глеб Гусаров
Мне нужно именно при нажатии
Vyacheslav
народ, а null-safety при создании нового проекта как включить?
Evgenii Elchev
вервию языка поставь 2.12.0
Evgenii Elchev
вообще не ясно зачем они ее выключили по умолчанию
Maksus
Кстати да, оч неприятно
Vyacheslav
как ее установить? вроде в пакете загрузила 2.13
Maksus
Пришлось ещё сниппеты переписывать для null safety
Evgenii Elchev
покажи верх pubspec
Evgenii Elchev
я так не помню
Vyacheslav
сейчас создам проект
MiT
В pubspec параметр sdk поменять
MiT
Или добавить если нет
MiT
Все там есть. И условия даже дали...
Maksus
В параметре сдк надо поменять 7 на 12
Evgenii Elchev
2.7.0 на 2.12.0
Maksus
Интересно сколько бы потребовалось самых больших дискет для хранения обновления 2.12
Vyacheslav
лучше сразу тогда шило и перфокарту
Vyacheslav
спасибо парни, все нормально теперь ??
Maksus
Я кстати говоря узнал, что я не на том обновлении сижу
Maksus
Только благодаря видосу
Глеб Гусаров
Что-то я не могу найти, уже все попробовал, какое из этих вы имели ввиду?
Maksus
Я как-то не обращал внимание, что при стартовом проекте у меня ставится не последнее обновление
Глеб Гусаров
elevation это в не нажатом состоянии тень
Глеб Гусаров
а мне нужно в нажатом
Глеб Гусаров
чтобы она пропадала
Adel Gilyazeev
[
{
"type": "bot_command",
"text": "/stat@combot"
}
]
Combot
Total messages: 361111
Maksus
Да там про все же в доках есть...и про миграцию с рейзеда
Maksus
Даже если ты зайдешь в эту кнопку, там вся дока будет в дарт файле
Глеб Гусаров
Я знаю если провалиться в саму кнопку, то можно заметить, что там pressedElevation = elevation + 6
Глеб Гусаров
Я это уже посмотрел и посмотрел код сам, по этому и написал сюда, может кто знает какие-то другие варианты из коробки
Adel Gilyazeev
Я всегда переписываю зависимости на самые последние) и новые зависимости добавляю через pub add
Anton Kowalski
Можно как-то одной строкой присвоить одно значение нескольким переменным?
Maksus
Так если других вариантов в самой коробке нет, откуда ты их возьмёшь, если только сам напишешь функцию
Maksus
Ну или библу очередную подключать
Maksus
Но уж лучше самому функцию на нажатие сделать
Maksus
С обнулением теней
Артем Терещук
Всем привет, ребят подскажите, а как адаптировать приложения под экраны такие как z fold, mate x2 ??
Глеб Гусаров
Я думал, может с какой-то другой кнопкой есть вариант выкрутиться, но видимо нет, просто в RaisedButton такое было, но там нет цвета тени, так бы его юзанул, но в любом случае спасибо за ответ )
TriXee { #include Life:me }
Всем привет, подскажите, как сделать баунс бэк анимацию, чтобы слайдер возвращался назад плавно
TriXee { #include Life:me }
Без анимации он просто телепортируется обратно
Глеб Гусаров
Все таки нашел в доках что можно заоверрайдить pressed elevation
G G
Всем привет , нужен педагог по флаттер разработке , который сможет полететь в дубай , перелёт виза проживание все включено , плюс спорт зал и бассейн и плюс хороший оклад
Temurxon
[
{
"type": "mention",
"text": "@dartlang_jobs"
}
]
Adel Gilyazeev
Используй оператор присвоения а = б = с = "somestring".replaceAll('s');
Anton Kowalski
Ага, спасибо
Амандос
[
{
"type": "link",
"text": "https://github.com/amonyalife/router/branches"
}
]
Амандос
Ребята подскажите пожалуйста. Меняю цвет listTile при выделении.
Anton Kowalski
[
"Что значит эта ошибка ",
{
"type": "code",
"text": "The following assertion was thrown during a service extension callback for \"ext.flutter.inspector.setSelectionById\""
},
""
]
Kirill Aparin
[
"У меня вот такая схема:\n",
{
"type": "code",
"text": "Column - Expanded - InteractiveViewer- Center- Stack- Table(defaultColumnWidth: IntrinsicColumnWidth(),)\n\n"
},
" Вопрос вот в чём: как сделать, чтобы ",
{
"type": "code",
"text": "InteractiveViewer"
},
" открывался во всю ширину или высоту, если ",
{
"type": "code",
"text": "Table"
},
" имеет children с фиксированным размером"
]
Kirill Aparin
Может как-то вычислять нужный размер и присваивать его для interactiveViewСontroller?
Vladislav
Всем привет. Кто-нибудь работал с авторизацией через Telegram в приложении? У меня пишет "bot domain invalid" в модальном окне поверх вебвью, при этом в браузере все нормально работает и мне приходят нужные данные о юзере...юзал и webview_flutter и flutter_inappwebview (in app browser тоже), везде одно и тоже....и инфы-то нет про телеграм oauth в флаттере что-то
Maksus
Ребят, может кто шарит, почему могла возникнуть такая ошибка?
Maksus
ну тут вопрос уже другой
Maksus
с ссылкой разобрался
Maksus
может кто шарит, я просто даже хз в чём собственно ошибка)
Maksus
походу алгоритм не оч эффективен...
Урусай
Вообще странно, 12 секунд это довольно много даже для большого объема данных
Maksus
Там возможно больше... Так как сервис не разрешает выполнять работу больше 12 секунд
Maksus
Ну походу он на тысячу элементов достаточно неэффективный
Maksus
Или я хз скок там даже элементов было, что он работал >12 секунд
Maksus
Я хз какая сложность у алгоритма этого
d
ну использовать … и removeAt вряд ли прибавит производительноссти, явно же есть методы получше
Maksus
Ну я чисто исходя из своих знаний
Maksus
Может и есть, я не спорю
d
ну знать бы что это за задача для начала
Дмитро Квик
мне кажется вот эта ...ls все время и хавает, removeAt по идее по сравнению с этим малое влияние оказывает
Evgenii Elchev
[
"я тут бахнул видео про CustomMultiChildLayout, а то частенько тут его советуют, но кажется никто ни разу не воспользовался)) ",
{
"type": "link",
"text": "https://youtu.be/lERoI7ksbXw"
},
""
]
d
ну смотря как сделаны листы под капотом
Дмитро Квик
да все равно, на тысяче элементов ремув вызовется 1000 раз, а вот тот цикл после него будет 500к раз прокручиваться
Maksus
Получаем лист интов, из него клепаем листы интов, где в каждом новом на 1 элемент меньше и потом складываем сумму всех элементов каждого листа, сумму каждого листа добавляем в лист и возвращаем эти суммы в виде листа
Serge Kozlov
Ребят, подскажите как исправить. Кто сталкивался с этим? не могу понять как исправить. Не запускается
Maksus
Как неприятно говорить лист вместо массива....
Evgenii Elchev
remove at 0 это жесть, он потом сдвиг делает всего листа)
Evgenii Elchev
тут надо односвязный список использовать)
Дмитро Квик
а такое есть на дарте?)
Evgenii Elchev
я бы поискал, но если нет можно же написать)
d
типа [1, 2, 3, 4] -> [[1, 2, 3, 4], [1, 2, 3], [1, 2], [1]] -> [[10], [6], [3], [1]]?
d
можно и самому написать)
Maksus
Да, только с первого, а не с последнего элемента
Evgenii Elchev
[
{
"type": "link",
"text": "https://api.dartlang.org/stable/dart-collection/LinkedList-class.html"
},
" а есть))"
]
Дмитро Квик
ну кстати а проблема не решается с удалением с последнего элемента, а не первого?
Evgenii Elchev
только там по индексу уже больше не обратишься)
d
ну это строится за о(н)
Evgenii Elchev
решается, если это валидно)
Evgenii Elchev
но я вижу человек добавляет в конец, удаляет в начале)
Maksus
Походу у меня не строится за о(н)
Evgenii Elchev
это типичное fi-fo
d
int currentSum = 0; for (final num in numbers) { result.add(currentSum + num); currentSum += num; }
Serge Kozlov
Может подсказать кто?
Дмитро Квик
действительно, у меня из университета почему-то сложилось впечатление что его можно написать только на чистых сишных указателях)
DVS (Read The F.ng Manual) Studio (NoHello)
[
{
"type": "italic",
"text": "стек обычно FILO обознаают, ну да ладно"
},
""
]
Evgenii Elchev
первый раз слышу такое)
DVS (Read The F.ng Manual) Studio (NoHello)
как и я про LIFO )
Evgenii Elchev
постоянно слышу
Evgenii Elchev
но не суть
Evgenii Elchev
и так и так корректно
d
ну классы передаются по ссылке в дарте, поэтому спокойно подойдут
Adel Gilyazeev
Чё это, стек же обычный и то и это
d
[
{
"type": "mention",
"text": "@Strinteger"
}
]
DVS (Read The F.ng Manual) Studio (NoHello)
синонимы. забей)
Maksus
Я если что все это время смотрю на него и пытаюсь вдуплить)
Evgenii Elchev
так я же нашел стандартную имплементацию
Evgenii Elchev
в пакете collection
Evgenii Elchev
бери, используй
d
ну если цель понять как оно работает, наверное, лучше сделать самому разок
Evgenii Elchev
я думал цель код ускорить)
Maksus
Это же мы делаем уже с Листом Листов?
Дмитро Квик
да да, у меня после си подсознательно указатели только как * и -> воспринимаются, только когда начну задумываться понимаю что в куче языков уже классы по ссылкам передаются)
Maksus
Точнее, с листами листа листов
Adel Gilyazeev
Думай как про js, тут по сути переменные так же передаются
d
[1, 2, 3, 4] -> [[1, 2, 3, 4], [2, 3, 4], [3, 4], [4]] типа так они хотят?
Evgenii Elchev
можно думать о нормальном языке?)))
d
а, тогда немного по-другому
Maksus
Суммы всех этих массивов надо пересчитать
d
то есть ответ предполагается как [[10], [9], [7], [4]]?
Maksus
И ноль ещё в конце... Хз поч так, но да
Maksus
Неважно какой массив, а ноль в конец запихивай
Maksus
Я уже скипнул ту задачу, я чисто для себя хочу понять как оптимизировать мой алгоритм
Maksus
Потому что он работает, но работает дорого
d
void main() { final input = [1, 2, 3, 4]; final sum = input.fold(0, (a, b) => a+b); final result = []; int currentSum = 0; for(final number in input) { result.add(sum - currentSum); currentSum += number; } result.add(0); print(result); }
Дмитро Квик
js для меня один из языков, которые я юзаю на роботе, но никогда руки не доходят нормально его выучить) какие-то мелкие плагины и методы дописывать хватает общих знаний и автокомплита в идеешке, а глубже учить надобности не было)
Maksus
Да, с фолдом я решение видел, почитаю про него
Maksus
В решениях что-то подобное в топе весит
d
ну суть в том что пересчитывать суммы не нужно опять же, допустим, у нас есть [1, 2, 3, 4] мы можем просто мемоизировать сумму исключенных элементов сначала у нас [1, 2, 3, 4], исключенных элементов нет, поэтому добавим в результат 10 - 0 далее у нас [2, 3, 4], мы исключили 1, в результат добавим 10 - 1 далее [3, 4], мы исключили 1 и 2, в результат добавим 10 - 1 - 2 то есть мы можем запоминать сколько мы исключили для предыдущих и использовать это значение на каждой итерации
d
эта сумма по сути хранится в currentSum которая хранит сумма исключенных элементов
d
решение за O(2n) что по сути есть O(n)
Maksus
Вот я чет не поразмыслил про сумму исключенных элементов, спасибо
Maksus
Из общей суммы для каждого массива вычитать сумму исключенных из него элементов, я правильно понял?
d
и по сути для каждого следующего массива она отличается на текущий элемент
d
можно сделать наоборот и проитерировать с конца, но надо добавлять элементы в начало а не конец добавим 0 [1,2,3,4] добавим 4 [4, 0] сохраним сумму 4 добавим 3 + 4 [7, 4, 0] добавим 2+3+4 [9, 7, 4, 0] и так далее - тут такая же идея с запоминанием предыдущей суммы но подозреваю что такое решение будет менее оптимизированным, если под капотом просизодит сдвиг элементов
d
разница в том что мы не делаем лишний проход по всем элементам чтобы посчитать сумму
d
но при этом добавляем в начало а не конец
Maksus
Что самое забавное я решал подобную задачу с треугольником, как раз высчитывал сумму исключенных элементов, в этой об этом не подумал
d
ну мемоизация это одна из самых простых оптимизаций алгоритмов например, рекурсивные числа фибоначчи из O(2^n) превращаются если не ошибаюсь в линию за счет мемоизации
Alex Wow
Пасеб А это тебе для чего ,просто задача ?
Alex Wow
Ебанутые задачи Как про что арбузов у Маши )
Maksus
С треугольником был факториал
Maksus
Вот факториал я решил, но не рекурсивно
Maksus
Там на каждой новой строке должно было быть меньше чем на предыдущей, типо треугольник получается равный
Alex Wow
Кстати фактриалом проще решить ,чем избавиться от него
Maksus
Мне когда в универе про рекурсии начали рассказывать, я послушал и решил заболеть
Maksus
Потом ещё в книжке эти рекурсии мне попались, решил тоже отложить
Alex Wow
Ну это просто Ты повторяешь действие
Alex Wow
На самом деле это достаточно просто
d
это пока не StackOverflowed )
Alex Wow
Поэтому ее не используют очень часто
Maksus
Подниматься по дереву тоже просто?)
Maksus
Когда речь о факториале
Maksus
Там же надо не только уйти в глубину, но ещё и вернуться
Alex Wow
Границы всегда ставят в рекурсии
Alex Wow
Иначе стекоферфлоу
Maksus
Ну вот тут уже и начинаются сложности, когда есть границы, которые нужно определить, как оптимально спускаться и подниматься по дереву, в этом основная сложность, простую рекурсивную функцию на инкримент не сложно написать
Alex Wow
Конечно сложно ) В этом и вся суть уметь писать ,понятно и правильно Платят не за красивые глаза ,а за ум )
Maksus
Поэтому мне не платят)0)
|