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 : /// Create gradient 12 1 : ReusedGradient(); 13 : 14 : /// Setter to reset the [Gradient] instance 15 1 : set gradient(Gradient gradient) { 16 1 : _gradient = gradient; 17 1 : _size = null; 18 : } 19 : 20 : /// Update the paint with provided size 21 1 : updateWith(Paint paint, {Rect size}) { 22 2 : if (size == _size) { 23 : return; 24 : } 25 1 : if (_gradient == null) { 26 : return; 27 : } 28 0 : _shader ??= _gradient.createShader(size); 29 0 : paint.shader = _shader; 30 0 : _size = size; 31 : } 32 : }