Skip to content

Commit

Permalink
[red] removing provider
Browse files Browse the repository at this point in the history
  • Loading branch information
hawkbee1 committed May 1, 2024
1 parent fabd83c commit 17c7d65
Show file tree
Hide file tree
Showing 22 changed files with 2,422 additions and 147 deletions.
2 changes: 2 additions & 0 deletions bluevsred_client/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: bluevsred_client
description: Starting point for a Serverpod client.

publish_to: none

environment:
sdk: '>=3.0.0 <4.0.0'

Expand Down
5 changes: 1 addition & 4 deletions bluevsred_flutter/lib/flame_game/game_win_dialog.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import '../level_selection/levels.dart';
import '../style/palette.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:nes_ui/nes_ui.dart';
import 'package:provider/provider.dart';

/// This dialog is shown when a level is completed.
///
Expand All @@ -25,12 +23,11 @@ class GameWinDialog extends StatelessWidget {

@override
Widget build(BuildContext context) {
final palette = context.read<Palette>();
return Center(
child: NesContainer(
width: 420,
height: 300,
backgroundColor: palette.backgroundPlaySession.color,
backgroundColor: Theme.of(context).colorScheme.background,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Expand Down
20 changes: 9 additions & 11 deletions bluevsred_flutter/lib/level_selection/level_selection_screen.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:bluevsred_flutter/level_selection/instructions_dialog.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:nes_ui/nes_ui.dart';
import 'package:provider/provider.dart';
Expand All @@ -8,21 +9,18 @@ import '../audio/audio_controller.dart';
import '../audio/sounds.dart';
import '../player_progress/player_progress.dart';
import '../style/wobbly_button.dart';
import '../style/palette.dart';
import 'levels.dart';

class LevelSelectionScreen extends StatelessWidget {
class LevelSelectionScreen extends ConsumerWidget {
const LevelSelectionScreen({super.key});

@override
Widget build(BuildContext context) {
final palette = context.watch<Palette>();
final playerProgress = context.watch<PlayerProgress>();
Widget build(BuildContext context, WidgetRef ref) {
final playerProgress = ref.watch(playerProgressProvider);
final levelTextStyle =
Theme.of(context).textTheme.bodyMedium?.copyWith(height: 1.4);

return Scaffold(
backgroundColor: palette.backgroundLevelSelection.color,
backgroundColor: Theme.of(context).colorScheme.background,
body: Column(
children: [
Padding(
Expand Down Expand Up @@ -58,7 +56,7 @@ class LevelSelectionScreen extends StatelessWidget {
children: [
for (final level in gameLevels)
ListTile(
enabled: playerProgress.levels.length >= level.number - 1,
enabled: ref.read(playerProgressProvider).length >= level.number - 1,
onTap: () {
final audioController = context.read<AudioController>();
audioController.playSfx(SfxType.buttonTap);
Expand All @@ -76,15 +74,15 @@ class LevelSelectionScreen extends StatelessWidget {
'Level #${level.number}',
style: levelTextStyle,
),
if (playerProgress.levels.length <
if (playerProgress.length <
level.number - 1) ...[
const SizedBox(width: 10),
const Icon(Icons.lock, size: 20),
] else if (playerProgress.levels.length >=
] else if (playerProgress.length >=
level.number) ...[
const SizedBox(width: 50),
Text(
'${playerProgress.levels[level.number - 1]}s',
'${playerProgress[level.number - 1]}s',
style: levelTextStyle,
),
],
Expand Down
61 changes: 13 additions & 48 deletions bluevsred_flutter/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
import 'package:bluevsred_flutter/theme.dart';
import 'package:flame/flame.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:nes_ui/nes_ui.dart';
import 'package:provider/provider.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

import 'router.dart';
import 'app_lifecycle/app_lifecycle.dart';
import 'audio/audio_controller.dart';
import 'player_progress/player_progress.dart';
import 'settings/settings.dart';
import 'style/palette.dart';

void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Flame.device.setLandscape();
await Flame.device.fullScreen();
// runApp(const ProviderScope(child: MyGame()));
runApp(const MyGame());
runApp(const ProviderScope(child: MyGame()));
}

class MyGame extends StatelessWidget {
Expand All @@ -25,45 +19,16 @@ class MyGame extends StatelessWidget {
@override
Widget build(BuildContext context) {
return AppLifecycleObserver(
child: MultiProvider(
providers: [
Provider(create: (context) => Palette()),
ChangeNotifierProvider(create: (context) => PlayerProgress()),
Provider(create: (context) => SettingsController()),
// Set up audio.
ProxyProvider2<SettingsController, AppLifecycleStateNotifier,
AudioController>(
// Ensures that music starts immediately.
lazy: false,
create: (context) => AudioController(),
update: (context, settings, lifecycleNotifier, audio) {
audio!.attachDependencies(lifecycleNotifier, settings);
return audio;
},
dispose: (context, audio) => audio.dispose(),
),
],
child: Builder(builder: (context) {
final palette = context.watch<Palette>();

return MaterialApp.router(
title: 'Endless Runner',
theme: flutterNesTheme().copyWith(
colorScheme: ColorScheme.fromSeed(
seedColor: palette.seed.color,
background: palette.backgroundMain.color,
),
textTheme: GoogleFonts.pressStart2pTextTheme().apply(
bodyColor: palette.text.color,
displayColor: palette.text.color,
),
),
routeInformationProvider: router.routeInformationProvider,
routeInformationParser: router.routeInformationParser,
routerDelegate: router.routerDelegate,
);
}),
),
child: Builder(builder: (context) {

return MaterialApp.router(
title: 'Endless Runner',
theme: theme,
routeInformationProvider: router.routeInformationProvider,
routeInformationParser: router.routeInformationParser,
routerDelegate: router.routerDelegate,
);
}),
);
}
}
4 changes: 1 addition & 3 deletions bluevsred_flutter/lib/main_menu/main_menu_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,18 @@ import '../audio/audio_controller.dart';
import '../audio/sounds.dart';
import '../settings/settings.dart';
import '../style/wobbly_button.dart';
import '../style/palette.dart';
import '../style/responsive_screen.dart';

class MainMenuScreen extends StatelessWidget {
const MainMenuScreen({super.key});

@override
Widget build(BuildContext context) {
final palette = context.watch<Palette>();
final settingsController = context.watch<SettingsController>();
final audioController = context.watch<AudioController>();

return Scaffold(
backgroundColor: palette.backgroundMain.color,
backgroundColor: Theme.of(context).colorScheme.background,
body: ResponsiveScreen(
squarishMainArea: Center(
child: Column(
Expand Down
5 changes: 1 addition & 4 deletions bluevsred_flutter/lib/player/active_game_player_troops.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,16 @@ part 'active_game_player_troops.g.dart';

@riverpod
class ActiveGamePlayerTroops extends _$ActiveGamePlayerTroops {
// ActiveGamePlayerTroops._();
@override
Future<Set<Troop>> build({required Set<Troop> troops}) async {
return troops;
}

void addTroops({required List<Troop> newTroops}) {
this.
state
if (state.value != null) {
state.value!.addAll(newTroops);
} else {
state.value => newTroops;
state = AsyncValue.data(newTroops.toSet());
}
}
}
177 changes: 177 additions & 0 deletions bluevsred_flutter/lib/player/active_game_player_troops.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 17c7d65

Please sign in to comment.