Skip to content

Commit

Permalink
Extract FabRotation code to reduce duplicate code
Browse files Browse the repository at this point in the history
  • Loading branch information
FauconSpartiate committed Apr 5, 2024
1 parent 5335f56 commit ce740b2
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 30 deletions.
10 changes: 1 addition & 9 deletions lib/ui/routes/subject_edit_route.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,10 @@ class SubjectEditRoute extends StatefulWidget {
State<SubjectEditRoute> createState() => _SubjectEditRouteState();
}

class _SubjectEditRouteState extends State<SubjectEditRoute> {
double fabRotation = 0;

class _SubjectEditRouteState extends SpinningFabPage<SubjectEditRoute> {
@override
void initState() {
super.initState();
Future.delayed(const Duration(milliseconds: 500)).then((_) {
if (!mounted) return;
setState(() {
fabRotation += 0.5;
});
});

if (widget.creationType == CreationType.add && Manager.years.isNotEmpty && getCurrentYear(allowSetup: false).termTemplate.isNotEmpty) {
WidgetsBinding.instance.addPostFrameCallback((_) {
Expand Down
14 changes: 1 addition & 13 deletions lib/ui/routes/subject_route.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,9 @@ class SubjectRoute extends StatefulWidget {
State<SubjectRoute> createState() => _SubjectRouteState();
}

class _SubjectRouteState extends State<SubjectRoute> {
double fabRotation = 0;
class _SubjectRouteState extends SpinningFabPage<SubjectRoute> {
final ScrollController scrollController = ScrollController();

@override
void initState() {
super.initState();
Future.delayed(const Duration(milliseconds: 500)).then((_) {
if (!mounted) return;
setState(() {
fabRotation += 0.5;
});
});
}

void rebuild() {
setState(() {});
}
Expand Down
9 changes: 1 addition & 8 deletions lib/ui/routes/year_route.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,15 @@ class YearRoute extends StatefulWidget {
State<YearRoute> createState() => _YearRouteState();
}

class _YearRouteState extends State<YearRoute> {
class _YearRouteState extends SpinningFabPage<YearRoute> {
final nameController = TextEditingController();
double fabRotation = 0;

@override
void initState() {
super.initState();
for (final Year year in Manager.years) {
year.calculate();
}
Future.delayed(const Duration(milliseconds: 500)).then((_) {
if (!mounted) return;
setState(() {
fabRotation += 0.5;
});
});
}

@override
Expand Down
15 changes: 15 additions & 0 deletions lib/ui/widgets/misc_widgets.dart
Original file line number Diff line number Diff line change
Expand Up @@ -244,3 +244,18 @@ class _MeasuredWidgetContent extends HookWidget {
return child;
}
}

abstract class SpinningFabPage<T extends StatefulWidget> extends State<T> {
double fabRotation = 0;

@override
void initState() {
super.initState();
Future.delayed(const Duration(milliseconds: 500)).then((_) {
if (!mounted) return;
setState(() {
fabRotation += 0.5;
});
});
}
}

0 comments on commit ce740b2

Please sign in to comment.