@@ -51,7 +51,7 @@ class GradientContainer extends StatefulWidget {
51
51
}
52
52
53
53
class GradientContainerState extends State <GradientContainer > {
54
- late Future <ui.FragmentProgram > _shaderProgram;
54
+ late Future <( ui.FragmentProgram , FragmentShader ) > _shaderProgram;
55
55
late Timer _timer;
56
56
double _time = 0.0 ;
57
57
Offset _mousePosition = Offset .zero;
@@ -74,9 +74,13 @@ class GradientContainerState extends State<GradientContainer> {
74
74
WidgetsBinding .instance.pointerRouter.addGlobalRoute (_updateMousePosition);
75
75
}
76
76
77
- Future <ui.FragmentProgram > _loadShader () async {
77
+ Future <( ui.FragmentProgram , FragmentShader ) > _loadShader () async {
78
78
try {
79
- return await ui.FragmentProgram .fromAsset ('lib/shaders/gradient.frag' );
79
+ final fragmentProgram =
80
+ await ui.FragmentProgram .fromAsset ('lib/shaders/gradient.frag' );
81
+ final fragmentShader = fragmentProgram.fragmentShader ();
82
+
83
+ return (fragmentProgram, fragmentShader);
80
84
} catch (e) {
81
85
rethrow ;
82
86
}
@@ -104,7 +108,7 @@ class GradientContainerState extends State<GradientContainer> {
104
108
105
109
@override
106
110
Widget build (BuildContext context) {
107
- return FutureBuilder <ui.FragmentProgram >(
111
+ return FutureBuilder <( ui.FragmentProgram , FragmentShader ) >(
108
112
future: _shaderProgram,
109
113
builder: (context, snapshot) {
110
114
if (! snapshot.hasData) {
@@ -114,10 +118,10 @@ class GradientContainerState extends State<GradientContainer> {
114
118
final isDark = FluentTheme .of (context).brightness.isDark;
115
119
116
120
final shader = snapshot.data! ;
121
+ final fragmentShader = shader.$2;
117
122
118
123
return AnimatedSampler (
119
124
(ui.Image image, Size size, Canvas canvas) {
120
- final fragmentShader = shader.fragmentShader ();
121
125
fragmentShader
122
126
..setImageSampler (0 , image)
123
127
// resolution
0 commit comments