Skip to content

Commit 68ae2f0

Browse files
committed
migration to flutter latest stable version and updated shader compilation and usage with new api and removed umbra
1 parent de68bbc commit 68ae2f0

File tree

18 files changed

+925
-856
lines changed

18 files changed

+925
-856
lines changed

lib/flutter_design_challenges/hanging_ropes/ropes.dart

Lines changed: 89 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'package:dart_numerics/dart_numerics.dart' as numerics;
1010
import 'package:flutter/material.dart';
1111
import 'package:flutter/scheduler.dart';
1212
import 'package:flutter_animations/flutter_shaders/stripes_shader/stripes.dart';
13+
import 'package:flutter_animations/flutter_shaders/stripes_shader/stripes_shader_builder.dart';
1314
import 'package:flutter_animations/util/extensions/colot_to_vector.dart';
1415
import '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

Comments
 (0)