Flutter canvas, как закрасить дочерний виджет?

#flutter #canvas #flutter-layout #custom-painting

#flutter #холст #flutter-макет #пользовательское рисование

Вопрос:

Я пытаюсь нарисовать красные точки над дочерним виджетом текстового поля следующим образом:

введите описание изображения здесь

Для этого я обернул дочерний виджет с CustomPaint() помощью widget:

  return CustomPaint(
      painter: DotsPainter(), //draws red dots based on child's size
      child: child, //textbox
    );
 

Но результат таков:

введите описание изображения здесь

Как заставить CustomPainter «наложить» свой дочерний виджет?

Спасибо.

Ответ №1:

У CustomPaint есть 2 возможных художника:

Когда его просят нарисовать, CustomPaint сначала просит своего художника нарисовать на текущем холсте, затем он рисует своего дочернего элемента, а затем, после рисования своего дочернего элемента, он просит своего foregroundPainter нарисовать.

(курсив мой)

Поэтому, если вместо этого вы переместите свой painter в foregroundPainter, он должен работать нормально:

 return CustomPaint(
  foregroundPainter: DotsPainter(), //draws red dots based on child's size
  child: child, //textbox
);