Использование градиента с объектом 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.

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