@@ -9,7 +9,7 @@ import '../paint/line_painter.dart';
9
9
import '../styles/styles.dart' ;
10
10
11
11
class LearnMorePage extends StatefulWidget {
12
- const LearnMorePage ({Key key}) : super (key: key);
12
+ const LearnMorePage ({Key ? key}) : super (key: key);
13
13
14
14
@override
15
15
_LearnMorePageState createState () => _LearnMorePageState ();
@@ -19,17 +19,17 @@ class _LearnMorePageState extends State<LearnMorePage>
19
19
with SingleTickerProviderStateMixin {
20
20
final ScrollController _scrollController = ScrollController ();
21
21
22
- ParticleController _particleController;
23
- AnimationController _animationController;
22
+ late ParticleController _particleController;
23
+ late AnimationController _animationController;
24
24
25
- double _pixels;
26
- int _timestamp;
25
+ double ? _pixels;
26
+ late int _timestamp;
27
27
28
28
void _scrollListener () {
29
29
final pixels = _scrollController.position.pixels;
30
30
final timestamp = DateTime .now ().millisecondsSinceEpoch;
31
31
if (_pixels != null ) {
32
- var velocity = ((pixels - _pixels) / (timestamp - _timestamp)) / 100 ;
32
+ var velocity = ((pixels - _pixels! ) / (timestamp - _timestamp)) / 100 ;
33
33
if (velocity > 0 ) {
34
34
velocity = min (velocity, 0.1 );
35
35
} else {
@@ -43,6 +43,8 @@ class _LearnMorePageState extends State<LearnMorePage>
43
43
44
44
@override
45
45
void initState () {
46
+ super .initState ();
47
+
46
48
_particleController = ParticleController ();
47
49
_animationController = AnimationController (
48
50
vsync: this ,
@@ -52,14 +54,14 @@ class _LearnMorePageState extends State<LearnMorePage>
52
54
);
53
55
_animationController.repeat ();
54
56
55
- // _scrollController.position.
56
57
_scrollController.addListener (_scrollListener);
57
- super .initState ();
58
58
}
59
59
60
60
@override
61
61
void dispose () {
62
62
_animationController.dispose ();
63
+ _scrollController.removeListener (_scrollListener);
64
+
63
65
super .dispose ();
64
66
}
65
67
@@ -135,7 +137,10 @@ class _LearnMorePageState extends State<LearnMorePage>
135
137
}
136
138
137
139
class LearnMoreHeader extends StatefulWidget {
138
- const LearnMoreHeader ({Key key, this .visibility = 1 }) : super (key: key);
140
+ const LearnMoreHeader ({
141
+ Key ? key,
142
+ this .visibility = 1 ,
143
+ }) : super (key: key);
139
144
final double visibility;
140
145
141
146
@override
@@ -144,22 +149,23 @@ class LearnMoreHeader extends StatefulWidget {
144
149
145
150
class _LearnMoreHeaderState extends State <LearnMoreHeader >
146
151
with SingleTickerProviderStateMixin {
147
- AnimationController _animationController;
148
- CurvedAnimation _animation;
152
+ late AnimationController _animationController;
153
+ late CurvedAnimation _animation;
149
154
150
155
@override
151
156
void initState () {
157
+ super .initState ();
152
158
_animationController =
153
159
AnimationController (vsync: this , duration: const Duration (seconds: 3 ));
154
160
_animation =
155
161
CurvedAnimation (parent: _animationController, curve: Curves .slowMiddle);
156
162
_animationController.repeat ();
157
- super .initState ();
158
163
}
159
164
160
165
@override
161
166
void dispose () {
162
167
_animationController.dispose ();
168
+
163
169
super .dispose ();
164
170
}
165
171
@@ -206,11 +212,11 @@ class ParticleController {
206
212
int numberOfParticles;
207
213
List <Particle > particles = [];
208
214
209
- void update ({double force}) {
215
+ void update ({double ? force}) {
210
216
for (final particle in particles) {
211
217
particle.applyForceUp (force: force);
212
218
if (particle.position.dy < 0.0 ) {
213
- final yPos = 1 + lerpDouble (0.1 , 0.3 , random.nextDouble ());
219
+ final yPos = 1 + lerpDouble (0.1 , 0.3 , random.nextDouble ())! ;
214
220
particle.reset (y: yPos);
215
221
}
216
222
}
@@ -222,10 +228,10 @@ class Particle {
222
228
_init ();
223
229
}
224
230
225
- Offset _position;
226
- double radius;
227
- Paint paint;
228
- double _force;
231
+ late Offset _position;
232
+ late double radius;
233
+ late Paint paint;
234
+ double ? _force;
229
235
230
236
final Random random;
231
237
@@ -240,19 +246,19 @@ class Particle {
240
246
_force = _randomForce ();
241
247
}
242
248
243
- void applyForceUp ({double force}) {
244
- final newForce = _force + (force ?? 0 );
249
+ void applyForceUp ({double ? force}) {
250
+ final newForce = ( _force ?? 0 ) + (force ?? 0 );
245
251
_position += Offset (0 , - newForce);
246
252
}
247
253
248
- void reset ({double y}) {
254
+ void reset ({double ? y}) {
249
255
y ?? = random.nextDouble ();
250
256
_position = Offset (random.nextDouble (), y);
251
257
_force = _randomForce ();
252
258
}
253
259
254
260
double _randomForce () {
255
- return lerpDouble (0.001 , 0.005 , random.nextDouble ());
261
+ return lerpDouble (0.001 , 0.005 , random.nextDouble ())! ;
256
262
}
257
263
}
258
264
@@ -275,11 +281,11 @@ class ParticlePainter extends CustomPainter {
275
281
}
276
282
}
277
283
278
- class LearnMoreSliverDelegateHeader implements SliverPersistentHeaderDelegate {
284
+ class LearnMoreSliverDelegateHeader extends SliverPersistentHeaderDelegate {
279
285
LearnMoreSliverDelegateHeader ({
280
- @ required this .minExtent,
281
- @ required this .maxExtent,
282
- this .onDownPressed,
286
+ required this .minExtent,
287
+ required this .maxExtent,
288
+ required this .onDownPressed,
283
289
});
284
290
285
291
@override
@@ -326,17 +332,8 @@ class LearnMoreSliverDelegateHeader implements SliverPersistentHeaderDelegate {
326
332
}
327
333
328
334
@override
329
- FloatingHeaderSnapConfiguration get snapConfiguration => null ;
330
-
331
- @override
332
- OverScrollHeaderStretchConfiguration get stretchConfiguration => null ;
333
-
334
- @override
335
- // TODO: implement showOnScreenConfiguration
336
- PersistentHeaderShowOnScreenConfiguration get showOnScreenConfiguration =>
337
- null ;
335
+ FloatingHeaderSnapConfiguration ? get snapConfiguration => null ;
338
336
339
337
@override
340
- // TODO: implement vsync
341
- TickerProvider get vsync => null ;
338
+ OverScrollHeaderStretchConfiguration ? get stretchConfiguration => null ;
342
339
}
0 commit comments