Использование градиента с объектом Paint на холсте Flutter
Я могу нарисовать полукруг, используя следующий пример: Flutter, как рисовать полукруг (полукруг)
Тем не менее Paint
объект только кажется принимает Color
(с помощью Paint.color
). Я хотел бы добавитьRadialGradient
или LinearGradient
как Color
. Это возможно?
1 ответ
Да! Это вполне возможно с помощью Paint.shader
.
Вы можете создать градиентный шейдер напрямую, используяdart:ui
или преобразовать градиент Flutter в шейдер, используя Gradient.createShader
.
dart:ui
градиент
import 'dart:ui' as ui;
// In your paint method
final paint = Paint()
..shader = ui.Gradient.linear(
startOffset,
endOffset,
[
color1,
color2,
],
);
Здесь можно увидеть пример из реального мира.
Флаттер painting
градиент
import 'package:flutter/painting.dart';
// In your paint method
final paint = Paint()
..shader = RadialGradient(
colors: [
color1,
color2,
],
).createShader(Rect.fromCircle(
center: offset,
radius: radius,
));
Пример этого можно найти здесь.
Эти двое практически одинаковы. Версия рисования Flutter просто преобразует его вdart:ui
градиент (шейдер) при вызовеcreateShader
. Причина, по которой он существует, заключается в том, что версия для рисования лучше подходит для готовых виджетов, таких какContainer
.