Такой вопрос имеется. Во флаттере, рипл-эффект реализован довольно любопытным способом —

имеются виджеты для определения касания, но они не рисуют саму волну. Волну рисует Material виджет.

Т.е., по факту, добавляя нажатие с риплом — каждое нажатие делегируется вверх по дереву к ближайшему виджету, который умеет рисовать волну.

Найти информацию почему оно так сделано мне не удалось. Только вот это: his matches the material design premise wherein the Material is what is actually reacting to touches by spreading ink.

Интересно, а в Compose как это реализовано?
И если так же, то может кто-то знает причину такого решения?

Не уж то только в «ой, ну так по логике материал дизигна нада»?

2 ответов

6 просмотров

фактически во вьюхах риплл работает похожим образом. не самом деле находится первый парент у которого есть какой то бекграунд и рипл рисуется поверх этого бекграунда. сделано так потому что вьюхи кропают по своим границам, а риплл часто подразумевает отрисовку и вне границ компонента. ещё из интересного во вьюхах дефолтное поведение это рисовать риппл как бекграунд под контентом, то есть под текстом или иконкой, если риппл не явно передан в setForeground(). в композе изначально сделали так же. но потом посовещались с дизайнерами и решили так как композ компоненты не клипают по границам по умолчанию можно сделать проще если мы просто будем рисовать поверх контента сразу после отрисовки компонента. в итоге нет необходимости повторять подход флаттера с двумя виджетами

Konstantin-Dovnar Автор вопроса
Andrey Kulikov
фактически во вьюхах риплл работает похожим образо...

Так. То есть по итогу — в компоузе — рипл рисуется не каким-то элементом по дереву, а прямо на месте вызова?

Похожие вопросы

Обсуждают сегодня

Всем привет, а может кто-то подсказать какие-то советы или типо того, как оптимальнее всего сапортить сервисы в разных локациях (канада + австралия + евпропа)? Будет ли ошибк...
Stas
8
вопрос: кто как решает вопрос с динамической подгрузкой скриптов для отдельных страниц с включенным turbo router?
Sergei Toroptsev
25
Всем привет! Может кто поможет разобраться с чёрной магией? (во всяком случае для меня) Дело вот в чём - написал я код для общения с tmc2209 драйвером по half duplex uart. М...
pronvis
4
Друзья, за кем?
Magic
12
ого, спасибо Никит, ты как всегда кладезь нужной инфы! Сейчас пойду копаться, а мне релиз создать как и версию самого плагина? типа 1.0.8?
Alex Blaze
9
кстати о стайлгайдах, хотел бы снова опднять вопрос 1. Использование string в полях типа sale_order_id = field.Many2one('sale.order', string='Sale Order'). Кто как делает? И п...
Sergej R
3
Всем привет. Кто-то может подсказать, как можно перевести значения Selection поля, если список значений в нем формируется динамически? Я изначально их получаю из selection дру...
Наталья Селезнева
6
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
Ребятки, для простенького тг бота с вебаппом на c# какой стэк/фреймворк посоветуете?
Mars BATYA [NYА]
4
Карта сайта