Flutter — жесткая остановка цвета в линейном градиенте

Я использую CustomPaint для создания пользовательской формы и хочу применить цветовой градиент, но с жесткими цветовыми точками. Без цветовых переходов.
PS: я не могу использовать разные краски вместо градиента из-за нестандартной формы.

Я проверил документацию и ничего не нашел. Это невозможно? Или есть другие обходные пути? Спасибо!

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
33
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете разделить свою пользовательскую фигуру на более мелкие фигуры и присвоить каждой из них свой правильный цвет. Это был бы один из способов сделать это.

Это совершенно верное замечание, но в моем случае форму трудно разбить на части.

Sewmina Dilshan 23.03.2022 17:06

У меня есть другая идея. Вы можете сделать это так: придайте всему холсту пользовательской краски цвет, цвет фона вашего приложения. Дайте вашей пользовательской форме Colors.transparent в качестве цвета. Затем вы делаете столько контейнеров с цветами, которые хотите иметь, и ставите их друг под другом, чтобы общий размер соответствовал размеру вашей пользовательской краски. Вы накладываете пользовательскую краску на эти контейнеры с помощью Stack Widget, и ваша пользовательская форма примет цвета этих контейнеров, потому что ее цвет прозрачен. В то время как окружение вашей пользовательской формы будет иметь цвет фона вашего приложения, потому что вся пользовательская краска окрашена таким образом.

Ух ты. Это должно точно решить мою проблему. Отличное нестандартное мышление. Я проверю это и посмотрю.

Sewmina Dilshan 24.03.2022 23:21
Ответ принят как подходящий

Хорошо, я сам разобрался, я использую Gradient.linear в качестве шейдера для пользовательской раскраски. Я заметил, что он смешивает цвета только тогда, когда есть большой разрыв в стопах. Поэтому я наношу свои цвета и стопы вот так.

Цвета | Останавливаться

Зеленый 0,2
Зеленый 0,201
Синий 0,5
Синий 0,501
Желтый 1

Теперь цветные стопы жесткие.

Вот предварительный просмотр до и после |

Другие вопросы по теме