@@ -10,6 +10,7 @@ import 'package:dart_numerics/dart_numerics.dart' as numerics;
1010import 'package:flutter/material.dart' ;
1111import 'package:flutter/scheduler.dart' ;
1212import 'package:flutter_animations/flutter_shaders/stripes_shader/stripes.dart' ;
13+ import 'package:flutter_animations/flutter_shaders/stripes_shader/stripes_shader_builder.dart' ;
1314import 'package:flutter_animations/util/extensions/colot_to_vector.dart' ;
1415import 'package:scidart/numdart.dart' ;
1516
@@ -27,8 +28,6 @@ class _RopesViewState extends State<HangingRopesView> {
2728 Offset dragPoint2 = Offset .zero;
2829 Offset dragPoint3 = Offset .zero;
2930
30- late Future <Stripes > helloWorld;
31-
3231 late Ticker ticker;
3332
3433 late double delta;
@@ -44,7 +43,6 @@ class _RopesViewState extends State<HangingRopesView> {
4443 void initState () {
4544 // TODO: implement initState
4645 super .initState ();
47- helloWorld = Stripes .compile ();
4846 delta = 0 ;
4947 ticker = Ticker ((elapsedTime) {
5048 setState (() {
@@ -155,84 +153,97 @@ class _RopesViewState extends State<HangingRopesView> {
155153 // Cars
156154 IgnorePointer (
157155 ignoring: true ,
158- child: FutureBuilder < Stripes >(
159- future : helloWorld,
160- builder : (context, snapshot) {
161- if (snapshot.hasData ) {
162- return Stack (
163- children : [
164- CustomPaint (
165- painter : RopesPainter (
166- const Offset ( 50 , 100 + topPadding) ,
167- dragPoint ,
168- snapshot.data ! . shader (
169- resolution : MediaQuery . of (context).size ,
170- uTime : delta ,
171- tiles : 20.0 ,
172- speed : ! isConnected ? 0 : delta / 10 ,
173- direction : 0.5 , // -1 to 1
174- warpScale : 0 ,
175- warpTiling : 0 ,
176- color1 : isConnected
177- ? Colors .yellow. toColorVector ()
178- : Colors .grey. toColorVector () ,
179- color2 : isConnected
180- ? Colors .amber. toColorVector ()
181- : Colors .blueGrey. toColorVector (),
182- ),
183- ) ,
184- size : Size .infinite ,
156+ child: LayoutBuilder (builder : (context, constraints) {
157+ return Stack (
158+ children : [
159+ StripesShaderBuilder (builder : (shader, delta ) {
160+ shader. shader (
161+ floatUniforms : StripesShaderArguments (
162+ size : Size (constraints.maxWidth, constraints.maxHeight),
163+ delta : delta,
164+ tiles : 20.0 ,
165+ speed : ! isConnected ? 0 : delta / 10 ,
166+ direction : 0.5 , // -1 to 1
167+ warpScale : 0 ,
168+ warpTiling : 0 ,
169+ color1 : isConnected
170+ ? Colors .yellow. toColorVector ()
171+ : Colors .grey. toColorVector (),
172+ color2 : isConnected
173+ ? Colors .amber. toColorVector ()
174+ : Colors .blueGrey. toColorVector (),
175+ ).uniforms,
176+ samplerUniforms : [] ,
177+ );
178+ return CustomPaint (
179+ painter : RopesPainter (
180+ const Offset ( 50 , 100 + topPadding ),
181+ dragPoint ,
182+ shader ,
185183 ),
186- CustomPaint (
187- painter: RopesPainter (
188- const Offset (50 , 250 + topPadding),
189- dragPoint2,
190- snapshot.data! .shader (
191- resolution: MediaQuery .of (context).size,
192- uTime: delta,
193- tiles: 20.0 ,
194- speed: ! isConnected2 ? 0 : delta / 10 ,
195- direction: 0.5 , // -1 to 1
196- warpScale: 0 ,
197- warpTiling: 0 ,
198- color1: isConnected2
199- ? Colors .greenAccent.toColorVector ()
200- : Colors .grey.toColorVector (),
201- color2: isConnected2
202- ? Colors .green.toColorVector ()
203- : Colors .blueGrey.toColorVector (),
204- ),
205- ),
206- size: Size .infinite,
184+ size: Size .infinite,
185+ );
186+ }),
187+ StripesShaderBuilder (builder: (shader, delta) {
188+ shader.shader (
189+ floatUniforms: StripesShaderArguments (
190+ size: Size (constraints.maxWidth, constraints.maxHeight),
191+
192+ delta: delta,
193+ tiles: 20.0 ,
194+ speed: ! isConnected2 ? 0 : delta / 10 ,
195+ direction: 0.5 , // -1 to 1
196+ warpScale: 0 ,
197+ warpTiling: 0 ,
198+ color1: isConnected2
199+ ? Colors .greenAccent.toColorVector ()
200+ : Colors .grey.toColorVector (),
201+ color2: isConnected2
202+ ? Colors .green.toColorVector ()
203+ : Colors .blueGrey.toColorVector (),
204+ ).uniforms,
205+ samplerUniforms: [],
206+ );
207+ return CustomPaint (
208+ painter: RopesPainter (
209+ const Offset (50 , 250 + topPadding),
210+ dragPoint2,
211+ shader,
207212 ),
208- CustomPaint (
209- painter: RopesPainter (
210- const Offset (50 , 400 + topPadding),
211- dragPoint3,
212- snapshot.data! .shader (
213- resolution: MediaQuery .of (context).size,
214- uTime: delta,
215- tiles: 20.0 ,
216- speed: ! isConnected3 ? 0 : delta / 10 ,
217- direction: 0.5 , // -1 to 1
218- warpScale: 0 ,
219- warpTiling: 0 ,
220- color1: isConnected3
221- ? Colors .redAccent.toColorVector ()
222- : Colors .grey.toColorVector (),
223- color2: isConnected3
224- ? Colors .red.toColorVector ()
225- : Colors .blueGrey.toColorVector (),
226- ),
227- ),
228- size: Size .infinite,
213+ size: Size .infinite,
214+ );
215+ }),
216+ StripesShaderBuilder (builder: (shader, delta) {
217+ shader.shader (
218+ floatUniforms: StripesShaderArguments (
219+ size: Size (constraints.maxWidth, constraints.maxHeight),
220+ delta: delta,
221+ tiles: 20.0 ,
222+ speed: ! isConnected3 ? 0 : delta / 10 ,
223+ direction: 0.5 , // -1 to 1
224+ warpScale: 0 ,
225+ warpTiling: 0 ,
226+ color1: isConnected3
227+ ? Colors .redAccent.toColorVector ()
228+ : Colors .grey.toColorVector (),
229+ color2: isConnected3
230+ ? Colors .red.toColorVector ()
231+ : Colors .blueGrey.toColorVector (),
232+ ).uniforms,
233+ samplerUniforms: [],
234+ );
235+ return CustomPaint (
236+ painter: RopesPainter (
237+ const Offset (50 , 400 + topPadding),
238+ dragPoint3,
239+ shader,
229240 ),
230- ] ,
231- );
232- }
233- return Container ();
234- },
235- ),
241+ size : Size .infinite ,
242+ );
243+ }),
244+ ],
245+ );
246+ } ),
236247 ),
237248 // Changing Stations
238249 IgnorePointer (
0 commit comments