chore: leaderboard misspelling, doc and minor fixes

pull/51/head
RuiAlonso 4 years ago
parent 02dd698336
commit a96117ae81

@ -70,7 +70,7 @@ class _PinballGameViewState extends State<PinballGameView> {
showDialog<void>( showDialog<void>(
context: context, context: context,
builder: (_) { builder: (_) {
return GameOverDialog(theme: widget.theme); return GameOverDialog(theme: widget.theme.characterTheme);
}, },
); );
} }

@ -1,9 +1,7 @@
// ignore_for_file: public_member_api_docs
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:pinball/game/game.dart'; import 'package:pinball/game/game.dart';
import 'package:pinball/l10n/l10n.dart'; import 'package:pinball/l10n/l10n.dart';
import 'package:pinball/leaderboard/leader_board.dart'; import 'package:pinball/leaderboard/leaderboard.dart';
import 'package:pinball_theme/pinball_theme.dart'; import 'package:pinball_theme/pinball_theme.dart';
/// {@template game_over_dialog} /// {@template game_over_dialog}
@ -13,7 +11,8 @@ class GameOverDialog extends StatelessWidget {
/// {@macro game_over_dialog} /// {@macro game_over_dialog}
const GameOverDialog({Key? key, required this.theme}) : super(key: key); const GameOverDialog({Key? key, required this.theme}) : super(key: key);
final PinballTheme theme; /// Current [CharacterTheme] to customize dialog
final CharacterTheme theme;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -30,7 +29,7 @@ class GameOverDialog extends StatelessWidget {
Text(l10n.gameOver), Text(l10n.gameOver),
TextButton( TextButton(
onPressed: () => Navigator.of(context).push<void>( onPressed: () => Navigator.of(context).push<void>(
LeaderBoardPage.route(theme: theme), LeaderboardPage.route(theme: theme),
), ),
child: Text(l10n.leadersBoard), child: Text(l10n.leadersBoard),
), ),

@ -1 +0,0 @@
export 'view/leader_board_page.dart';

@ -0,0 +1 @@
export 'view/leaderboard_page.dart';

@ -1,34 +1,37 @@
// ignore_for_file: public_member_api_docs
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:pinball/l10n/l10n.dart'; import 'package:pinball/l10n/l10n.dart';
import 'package:pinball/theme/theme.dart'; import 'package:pinball/theme/theme.dart';
import 'package:pinball_theme/pinball_theme.dart'; import 'package:pinball_theme/pinball_theme.dart';
class LeaderBoardPage extends StatelessWidget { /// {@template leaderboard_page}
const LeaderBoardPage({Key? key, required this.theme}) : super(key: key); /// Shows the leaderboard of [Competitor]s.
/// {@endtemplate}
class LeaderboardPage extends StatelessWidget {
/// {@macro leaderboard_page}
const LeaderboardPage({Key? key, required this.theme}) : super(key: key);
final PinballTheme theme; /// Current [CharacterTheme] to customize screen
final CharacterTheme theme;
static Route route({required PinballTheme theme}) { ///
static Route route({required CharacterTheme theme}) {
return MaterialPageRoute<void>( return MaterialPageRoute<void>(
builder: (_) => LeaderBoardPage(theme: theme), builder: (_) => LeaderboardPage(theme: theme),
); );
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocProvider( return BlocProvider(
create: (context) => create: (context) => ThemeCubit()..characterSelected(theme),
ThemeCubit()..characterSelected(theme.characterTheme), child: const LeaderboardView(),
child: const LeaderBoardView(),
); );
} }
} }
class LeaderBoardView extends StatelessWidget { class LeaderboardView extends StatelessWidget {
const LeaderBoardView({Key? key}) : super(key: key); const LeaderboardView({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -46,7 +49,7 @@ class LeaderBoardView extends StatelessWidget {
style: Theme.of(context).textTheme.headline3, style: Theme.of(context).textTheme.headline3,
), ),
const SizedBox(height: 80), const SizedBox(height: 80),
const _LeaderBoardView(), const _LeaderboardRanking(),
const SizedBox(height: 20), const SizedBox(height: 20),
TextButton( TextButton(
onPressed: () => Navigator.of(context).push<void>( onPressed: () => Navigator.of(context).push<void>(
@ -62,8 +65,8 @@ class LeaderBoardView extends StatelessWidget {
} }
} }
class _LeaderBoardView extends StatelessWidget { class _LeaderboardRanking extends StatelessWidget {
const _LeaderBoardView({Key? key}) : super(key: key); const _LeaderboardRanking({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -72,16 +75,16 @@ class _LeaderBoardView extends StatelessWidget {
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: const [ children: const [
_LeaderBoardHeaders(), _LeaderboardHeaders(),
_LeaderBoardList(), _LeaderboardList(),
], ],
), ),
); );
} }
} }
class _LeaderBoardHeaders extends StatelessWidget { class _LeaderboardHeaders extends StatelessWidget {
const _LeaderBoardHeaders({Key? key}) : super(key: key); const _LeaderboardHeaders({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -90,17 +93,17 @@ class _LeaderBoardHeaders extends StatelessWidget {
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
_LeaderBoardHeaderItem(title: l10n.rank), _LeaderboardHeaderItem(title: l10n.rank),
_LeaderBoardHeaderItem(title: l10n.character), _LeaderboardHeaderItem(title: l10n.character),
_LeaderBoardHeaderItem(title: l10n.userName), _LeaderboardHeaderItem(title: l10n.userName),
_LeaderBoardHeaderItem(title: l10n.score), _LeaderboardHeaderItem(title: l10n.score),
], ],
); );
} }
} }
class _LeaderBoardHeaderItem extends StatelessWidget { class _LeaderboardHeaderItem extends StatelessWidget {
const _LeaderBoardHeaderItem({Key? key, required this.title}) const _LeaderboardHeaderItem({Key? key, required this.title})
: super(key: key); : super(key: key);
final String title; final String title;
@ -121,8 +124,8 @@ class _LeaderBoardHeaderItem extends StatelessWidget {
} }
} }
class _LeaderBoardList extends StatelessWidget { class _LeaderboardList extends StatelessWidget {
const _LeaderBoardList({Key? key}) : super(key: key); const _LeaderboardList({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -132,7 +135,7 @@ class _LeaderBoardList extends StatelessWidget {
competitor: Competitor( competitor: Competitor(
rank: index, rank: index,
characterTheme: const SparkyTheme(), characterTheme: const SparkyTheme(),
userName: 'user$index', initials: 'user$index',
score: 0, score: 0,
), ),
), ),
@ -152,19 +155,19 @@ class _LeaderBoardCompetitor extends StatelessWidget {
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
_LeaderBoardCompetitorField(text: competitor.rank.toString()), _LeaderboardCompetitorField(text: competitor.rank.toString()),
_LeaderBoardCompetitorCharacter( _LeaderboardCompetitorCharacter(
characterTheme: competitor.characterTheme, characterTheme: competitor.characterTheme,
), ),
_LeaderBoardCompetitorField(text: competitor.userName), _LeaderboardCompetitorField(text: competitor.initials),
_LeaderBoardCompetitorField(text: competitor.score.toString()), _LeaderboardCompetitorField(text: competitor.score.toString()),
], ],
); );
} }
} }
class _LeaderBoardCompetitorField extends StatelessWidget { class _LeaderboardCompetitorField extends StatelessWidget {
const _LeaderBoardCompetitorField({Key? key, required this.text}) const _LeaderboardCompetitorField({Key? key, required this.text})
: super(key: key); : super(key: key);
final String text; final String text;
@ -188,8 +191,8 @@ class _LeaderBoardCompetitorField extends StatelessWidget {
} }
} }
class _LeaderBoardCompetitorCharacter extends StatelessWidget { class _LeaderboardCompetitorCharacter extends StatelessWidget {
const _LeaderBoardCompetitorCharacter({ const _LeaderboardCompetitorCharacter({
Key? key, Key? key,
required this.characterTheme, required this.characterTheme,
}) : super(key: key); }) : super(key: key);
@ -215,16 +218,27 @@ class _LeaderBoardCompetitorCharacter extends StatelessWidget {
} }
} }
/// {@template competitor}
/// Class for players at ranking table.
/// {@endtemplate}
class Competitor { class Competitor {
/// {@macro competitor}
Competitor({ Competitor({
required this.rank, required this.rank,
required this.characterTheme, required this.characterTheme,
required this.userName, required this.initials,
required this.score, required this.score,
}); });
/// [Competitor]'s position at ranking table.
final int rank; final int rank;
/// [Competitor]'s selected [CharacterTheme].
final CharacterTheme characterTheme; final CharacterTheme characterTheme;
final String userName;
/// [Competitor]'s name initials.
final String initials;
/// [Competitor]'s final score.
final int score; final int score;
} }

@ -15,9 +15,7 @@ void main() {
final l10n = await AppLocalizations.delegate.load(Locale('en')); final l10n = await AppLocalizations.delegate.load(Locale('en'));
await tester.pumpApp( await tester.pumpApp(
const GameOverDialog( const GameOverDialog(
theme: PinballTheme( theme: DashTheme(),
characterTheme: DashTheme(),
),
), ),
); );
@ -33,9 +31,7 @@ void main() {
await tester.pumpApp( await tester.pumpApp(
const GameOverDialog( const GameOverDialog(
theme: PinballTheme( theme: DashTheme(),
characterTheme: DashTheme(),
),
), ),
navigator: navigator, navigator: navigator,
); );

@ -4,23 +4,21 @@ import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:mockingjay/mockingjay.dart'; import 'package:mockingjay/mockingjay.dart';
import 'package:pinball/l10n/l10n.dart'; import 'package:pinball/l10n/l10n.dart';
import 'package:pinball/leaderboard/view/leader_board_page.dart'; import 'package:pinball/leaderboard/view/leaderboard_page.dart';
import 'package:pinball_theme/pinball_theme.dart'; import 'package:pinball_theme/pinball_theme.dart';
import '../../helpers/helpers.dart'; import '../../helpers/helpers.dart';
void main() { void main() {
group('LeaderBoardPage', () { group('LeaderboardPage', () {
testWidgets('renders LeaderBoardView', (tester) async { testWidgets('renders LeaderboardView', (tester) async {
await tester.pumpApp( await tester.pumpApp(
LeaderBoardPage( LeaderboardPage(
theme: PinballTheme( theme: DashTheme(),
characterTheme: DashTheme(),
),
), ),
); );
expect(find.byType(LeaderBoardView), findsOneWidget); expect(find.byType(LeaderboardView), findsOneWidget);
}); });
testWidgets('route returns a valid navigation route', (tester) async { testWidgets('route returns a valid navigation route', (tester) async {
@ -31,10 +29,8 @@ void main() {
return ElevatedButton( return ElevatedButton(
onPressed: () { onPressed: () {
Navigator.of(context).push<void>( Navigator.of(context).push<void>(
LeaderBoardPage.route( LeaderboardPage.route(
theme: PinballTheme( theme: DashTheme(),
characterTheme: DashTheme(),
),
), ),
); );
}, },
@ -48,18 +44,16 @@ void main() {
await tester.tap(find.text('Tap me')); await tester.tap(find.text('Tap me'));
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.byType(LeaderBoardPage), findsOneWidget); expect(find.byType(LeaderboardPage), findsOneWidget);
}); });
}); });
group('LeaderBoardView', () { group('LeaderboardView', () {
testWidgets('renders correctly', (tester) async { testWidgets('renders correctly', (tester) async {
final l10n = await AppLocalizations.delegate.load(Locale('en')); final l10n = await AppLocalizations.delegate.load(Locale('en'));
await tester.pumpApp( await tester.pumpApp(
LeaderBoardPage( LeaderboardPage(
theme: PinballTheme( theme: DashTheme(),
characterTheme: DashTheme(),
),
), ),
); );
@ -73,10 +67,8 @@ void main() {
when(() => navigator.push<void>(any())).thenAnswer((_) async {}); when(() => navigator.push<void>(any())).thenAnswer((_) async {});
await tester.pumpApp( await tester.pumpApp(
LeaderBoardPage( LeaderboardPage(
theme: PinballTheme( theme: DashTheme(),
characterTheme: DashTheme(),
),
), ),
navigator: navigator, navigator: navigator,
); );

Loading…
Cancel
Save