Как выборочно размывать виджеты в дочернем стеке во флаттере? - PullRequest
0 голосов
/ 21 ноября 2018

Я посмотрел на вопросы о флаттере, и вот что я собираюсь сделать: https://github.com/flutter/flutter/issues/13489

У меня есть 2 виджета круга.Они расположены в стеке и расположены как диаграмма Венна, так что они частично перекрывают друг друга:

final vennDiagram = Stack(
    children: [
        leftCircle,
        rightCircle,
    ],
);

Я хочу добавить к ним красивую размытую «тень», поэтому я делаю копиюих и поместите эту копию за ними в другой стек, и примените размытие (см. this ).Теперь у меня есть:

Stack(
    children: [
        vennDiagramShadow, // essentially an offset copy of `vennDiagram`
        blur, // BackdropFilter
        vennDiagram,
    ],
)

Это выглядит великолепно - у меня есть диаграмма Венна с четкими краями и размытой "тенью" на заднем плане.

Но теперь допустим, я хочу каждый виджетбыть ответственным за свой собственный эффект «размытой тени» - например, я хочу, чтобы тень первого круга была более размытой (например, пользователь нажимает на одну сторону диаграммы Венна).Теперь я сделаю рефакторинг для:

final vennDiagram = Stack(
    children: [
        Stack(children: [leftCircleShadow, extraBlur, leftCircle]),
        Stack(children: [rightCircleShadow, blur, rightCircle]),
    ],
);

В результате все под правым кругом будет размыто с blur, потому что в стеке blur.накладывает левый круг.На самом деле, я хочу, чтобы blur.

влиял только на rightCircleShadow. Как я могу выбирать виджеты размытия только в моем "локальном" стеке?Вместо родительского стека?

...