Line data Source code
1 : import 'package:flutter/cupertino.dart'; 2 : 3 : /// Wrapper for [Gradient], we don't want to re-create instance frequently in 4 : /// hot method, such as paint(). 5 : class ReusedGradient { 6 : Gradient _gradient; 7 : 8 : Shader _shader; 9 : Rect _size; 10 : 11 1 : ReusedGradient(); 12 : 13 : /// Setter to reset the [Gradient] instance 14 1 : set gradient(Gradient gradient) { 15 1 : _gradient = gradient; 16 1 : _size = null; 17 : } 18 : 19 : /// Update the paint with provided size 20 1 : updateWith(Paint paint, {Rect size}) { 21 2 : if (size == _size) { 22 : return; 23 : } 24 1 : if (_gradient == null) { 25 : return; 26 : } 27 0 : _shader ??= _gradient.createShader(size); 28 0 : paint.shader = _shader; 29 0 : _size = size; 30 : } 31 : }