Skip to content

Commit 4f10be0

Browse files
author
Gordon Hayes
committed
feat: null safety
1 parent 751911e commit 4f10be0

15 files changed

+192
-106
lines changed

section_6/routes_and_the_rest/lib/main.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'ux/pages/home.dart';
77
void main() => runApp(const MyApp());
88

99
class MyApp extends StatefulWidget {
10-
const MyApp({Key key}) : super(key: key);
10+
const MyApp({Key? key}) : super(key: key);
1111

1212
@override
1313
_MyAppState createState() => _MyAppState();

section_6/routes_and_the_rest/lib/models/content_model.dart

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
class ContentModel {
22
const ContentModel({
3-
this.title,
4-
this.description,
5-
this.logoLocation,
6-
this.logoTag,
7-
this.titleTag,
3+
required this.title,
4+
required this.description,
5+
required this.logoLocation,
6+
required this.logoTag,
7+
required this.titleTag,
88
});
99

1010
final String title;

section_6/routes_and_the_rest/lib/ux/extensions/bounce_extensions.dart

+8-4
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ extension BounceExtension on Widget {
99
}
1010

1111
class _BounceOutAnimation extends StatefulWidget {
12-
const _BounceOutAnimation({Key key, this.child}) : super(key: key);
12+
const _BounceOutAnimation({
13+
Key? key,
14+
required this.child,
15+
}) : super(key: key);
1316

1417
final Widget child;
1518

@@ -19,8 +22,8 @@ class _BounceOutAnimation extends StatefulWidget {
1922

2023
class _BounceOutAnimationState extends State<_BounceOutAnimation>
2124
with SingleTickerProviderStateMixin {
22-
AnimationController _controller;
23-
Animation<double> _animation;
25+
late AnimationController _controller;
26+
late Animation<double> _animation;
2427

2528
static final TweenSequence<double> _offsetTween = TweenSequence(
2629
<TweenSequenceItem<double>>[
@@ -40,12 +43,13 @@ class _BounceOutAnimationState extends State<_BounceOutAnimation>
4043

4144
@override
4245
void initState() {
46+
super.initState();
47+
4348
_controller =
4449
AnimationController(vsync: this, duration: const Duration(seconds: 2));
4550
_animation = _offsetTween.animate(_controller);
4651

4752
_controller.repeat();
48-
super.initState();
4953
}
5054

5155
@override

section_6/routes_and_the_rest/lib/ux/pages/home.dart

+6-6
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import '../widgets/zoom_page_view.dart';
1212
import 'learn_more_page.dart';
1313

1414
class Home extends StatefulWidget {
15-
const Home({Key key}) : super(key: key);
15+
const Home({Key? key}) : super(key: key);
1616

1717
@override
1818
_HomeState createState() => _HomeState();
@@ -26,19 +26,19 @@ class _HomeState extends State<Home>
2626

2727
final ValueNotifier<double> _valueNotifier = ValueNotifier(0.5);
2828

29-
PageController _pageController;
30-
AnimationController _controller;
29+
late PageController _pageController;
30+
late AnimationController _controller;
3131

3232
@override
3333
void initState() {
34+
super.initState();
35+
3436
_pageController = PageController(
3537
initialPage: _initialPage, viewportFraction: _viewPortFraction);
3638
_controller = AnimationController(
3739
vsync: this,
3840
duration: _transitionDuration,
3941
);
40-
41-
super.initState();
4242
}
4343

4444
@override
@@ -120,7 +120,7 @@ class _HomeState extends State<Home>
120120
children: <Widget>[
121121
ValueListenableBuilder(
122122
valueListenable: _valueNotifier,
123-
builder: (BuildContext context, double value, Widget child) {
123+
builder: (BuildContext context, double value, Widget? child) {
124124
return BinarayBackround(value: _valueNotifier.value);
125125
},
126126
),

section_6/routes_and_the_rest/lib/ux/pages/info_page.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import '../styles/styles.dart';
77

88
class InfoPage extends StatelessWidget {
99
const InfoPage({
10-
Key key,
11-
@required this.content,
10+
Key? key,
11+
required this.content,
1212
}) : super(key: key);
1313

1414
final ContentModel content;

section_6/routes_and_the_rest/lib/ux/pages/learn_more_page.dart

+34-37
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import '../paint/line_painter.dart';
99
import '../styles/styles.dart';
1010

1111
class LearnMorePage extends StatefulWidget {
12-
const LearnMorePage({Key key}) : super(key: key);
12+
const LearnMorePage({Key? key}) : super(key: key);
1313

1414
@override
1515
_LearnMorePageState createState() => _LearnMorePageState();
@@ -19,17 +19,17 @@ class _LearnMorePageState extends State<LearnMorePage>
1919
with SingleTickerProviderStateMixin {
2020
final ScrollController _scrollController = ScrollController();
2121

22-
ParticleController _particleController;
23-
AnimationController _animationController;
22+
late ParticleController _particleController;
23+
late AnimationController _animationController;
2424

25-
double _pixels;
26-
int _timestamp;
25+
double? _pixels;
26+
late int _timestamp;
2727

2828
void _scrollListener() {
2929
final pixels = _scrollController.position.pixels;
3030
final timestamp = DateTime.now().millisecondsSinceEpoch;
3131
if (_pixels != null) {
32-
var velocity = ((pixels - _pixels) / (timestamp - _timestamp)) / 100;
32+
var velocity = ((pixels - _pixels!) / (timestamp - _timestamp)) / 100;
3333
if (velocity > 0) {
3434
velocity = min(velocity, 0.1);
3535
} else {
@@ -43,6 +43,8 @@ class _LearnMorePageState extends State<LearnMorePage>
4343

4444
@override
4545
void initState() {
46+
super.initState();
47+
4648
_particleController = ParticleController();
4749
_animationController = AnimationController(
4850
vsync: this,
@@ -52,14 +54,14 @@ class _LearnMorePageState extends State<LearnMorePage>
5254
);
5355
_animationController.repeat();
5456

55-
// _scrollController.position.
5657
_scrollController.addListener(_scrollListener);
57-
super.initState();
5858
}
5959

6060
@override
6161
void dispose() {
6262
_animationController.dispose();
63+
_scrollController.removeListener(_scrollListener);
64+
6365
super.dispose();
6466
}
6567

@@ -135,7 +137,10 @@ class _LearnMorePageState extends State<LearnMorePage>
135137
}
136138

137139
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);
139144
final double visibility;
140145

141146
@override
@@ -144,22 +149,23 @@ class LearnMoreHeader extends StatefulWidget {
144149

145150
class _LearnMoreHeaderState extends State<LearnMoreHeader>
146151
with SingleTickerProviderStateMixin {
147-
AnimationController _animationController;
148-
CurvedAnimation _animation;
152+
late AnimationController _animationController;
153+
late CurvedAnimation _animation;
149154

150155
@override
151156
void initState() {
157+
super.initState();
152158
_animationController =
153159
AnimationController(vsync: this, duration: const Duration(seconds: 3));
154160
_animation =
155161
CurvedAnimation(parent: _animationController, curve: Curves.slowMiddle);
156162
_animationController.repeat();
157-
super.initState();
158163
}
159164

160165
@override
161166
void dispose() {
162167
_animationController.dispose();
168+
163169
super.dispose();
164170
}
165171

@@ -206,11 +212,11 @@ class ParticleController {
206212
int numberOfParticles;
207213
List<Particle> particles = [];
208214

209-
void update({double force}) {
215+
void update({double? force}) {
210216
for (final particle in particles) {
211217
particle.applyForceUp(force: force);
212218
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())!;
214220
particle.reset(y: yPos);
215221
}
216222
}
@@ -222,10 +228,10 @@ class Particle {
222228
_init();
223229
}
224230

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;
229235

230236
final Random random;
231237

@@ -240,19 +246,19 @@ class Particle {
240246
_force = _randomForce();
241247
}
242248

243-
void applyForceUp({double force}) {
244-
final newForce = _force + (force ?? 0);
249+
void applyForceUp({double? force}) {
250+
final newForce = (_force ?? 0) + (force ?? 0);
245251
_position += Offset(0, -newForce);
246252
}
247253

248-
void reset({double y}) {
254+
void reset({double? y}) {
249255
y ??= random.nextDouble();
250256
_position = Offset(random.nextDouble(), y);
251257
_force = _randomForce();
252258
}
253259

254260
double _randomForce() {
255-
return lerpDouble(0.001, 0.005, random.nextDouble());
261+
return lerpDouble(0.001, 0.005, random.nextDouble())!;
256262
}
257263
}
258264

@@ -275,11 +281,11 @@ class ParticlePainter extends CustomPainter {
275281
}
276282
}
277283

278-
class LearnMoreSliverDelegateHeader implements SliverPersistentHeaderDelegate {
284+
class LearnMoreSliverDelegateHeader extends SliverPersistentHeaderDelegate {
279285
LearnMoreSliverDelegateHeader({
280-
@required this.minExtent,
281-
@required this.maxExtent,
282-
this.onDownPressed,
286+
required this.minExtent,
287+
required this.maxExtent,
288+
required this.onDownPressed,
283289
});
284290

285291
@override
@@ -326,17 +332,8 @@ class LearnMoreSliverDelegateHeader implements SliverPersistentHeaderDelegate {
326332
}
327333

328334
@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;
338336

339337
@override
340-
// TODO: implement vsync
341-
TickerProvider get vsync => null;
338+
OverScrollHeaderStretchConfiguration? get stretchConfiguration => null;
342339
}

section_6/routes_and_the_rest/lib/ux/transitions/flip_transition.dart

+8-5
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import 'package:flutter/material.dart';
55

66
class FlipTransition extends AnimatedWidget {
77
FlipTransition({
8-
Key key,
9-
Animation<double> animation,
10-
this.child,
8+
Key? key,
9+
required Animation<double> animation,
10+
required this.child,
1111
bool isEntry = true,
1212
}) : offsetXTween = Tween<double>(begin: isEntry ? -15 : 15, end: 2),
1313
scaleSequence = TweenSequence(
@@ -135,8 +135,11 @@ class FlipTransition extends AnimatedWidget {
135135
}
136136

137137
class RotationY extends StatelessWidget {
138-
const RotationY({Key key, @required this.child, this.rotationY = 0})
139-
: super(key: key);
138+
const RotationY({
139+
Key? key,
140+
required this.child,
141+
this.rotationY = 0,
142+
}) : super(key: key);
140143

141144
//Degrees to rads constant
142145
static const double degrees2Radians = pi / 180;

section_6/routes_and_the_rest/lib/ux/widgets/binary_background.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import '../styles/styles.dart';
44

55
class BinarayBackround extends StatelessWidget {
66
const BinarayBackround({
7-
Key key,
8-
@required this.value,
7+
Key? key,
8+
required this.value,
99
}) : super(key: key);
1010

1111
final double value;
@@ -26,7 +26,7 @@ class BinarayBackround extends StatelessWidget {
2626
const Alignment(-0.9, 0),
2727
const Alignment(0.9, 0),
2828
value,
29-
),
29+
)!,
3030
fit: BoxFit.cover,
3131
),
3232
),

section_6/routes_and_the_rest/lib/ux/widgets/learn_more_button/learn_more_button.dart

+16-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ import 'wiggle_painter.dart';
88
import 'wiggle_path.dart';
99

1010
class LearnMoreButton extends StatefulWidget {
11-
const LearnMoreButton({Key key, this.onPressed}) : super(key: key);
11+
const LearnMoreButton({
12+
Key? key,
13+
required this.onPressed,
14+
}) : super(key: key);
1215

1316
final VoidCallback onPressed;
1417

@@ -18,15 +21,17 @@ class LearnMoreButton extends StatefulWidget {
1821

1922
class _LearnMoreButtonState extends State<LearnMoreButton>
2023
with SingleTickerProviderStateMixin {
21-
WigglePath _wigglePath;
22-
AnimationController _controller;
23-
Animation<double> _animation;
24+
late WigglePath _wigglePath;
25+
late AnimationController _controller;
26+
late Animation<double> _animation;
2427

2528
static const buttonWidth = 300.0;
2629
static const buttonHeight = 200.0;
2730

2831
@override
2932
void initState() {
33+
super.initState();
34+
3035
_wigglePath = WigglePath(width: buttonWidth, height: buttonHeight);
3136
_controller =
3237
AnimationController(vsync: this, duration: const Duration(seconds: 5));
@@ -39,7 +44,13 @@ class _LearnMoreButtonState extends State<LearnMoreButton>
3944
_controller.forward(from: 0);
4045
}
4146
});
42-
super.initState();
47+
}
48+
49+
@override
50+
void dispose() {
51+
_controller.dispose();
52+
53+
super.dispose();
4354
}
4455

4556
@override

0 commit comments

Comments
 (0)