Skip to content

Commit

Permalink
Merge pull request #1 from tylersavery/feature/audio
Browse files Browse the repository at this point in the history
Feature/audio
  • Loading branch information
tylersavery authored Feb 9, 2022
2 parents c6fce25 + 4224530 commit 580ad3b
Show file tree
Hide file tree
Showing 51 changed files with 2,694 additions and 208 deletions.
26 changes: 25 additions & 1 deletion lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,40 @@
import 'package:audio_service/audio_service.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_skeleton/src/core/app/env.dart';
import 'package:flutter_skeleton/src/core/app/singletons.dart';
import 'package:flutter_skeleton/src/feature/audio/audio_queue.dart';
import 'package:flutter_skeleton/src/feature/audio/playback_manager.dart';
import 'package:url_strategy/url_strategy.dart';

import 'src/app.dart';

Future<void> _loadDebugAudio() async {
final _audioQueue = singleton<AudioQueue>();
final _audioHandler = singleton<AudioHandler>();

singleton<PlaybackManager>().init();

final playlist = await _audioQueue.fetchInitialPlaylist();
final mediaItems = playlist
.map((track) => MediaItem(
id: track.id.toString(),
title: track.name,
extras: {
'url': track.audio,
},
))
.toList();
_audioHandler.addQueueItems(mediaItems);
}

void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Env.init();
setPathUrlStrategy();
await initAppModule();
await initSingletons();

await _loadDebugAudio();

runApp(const RootRestorationScope(
restorationId: "root",
Expand Down
16 changes: 3 additions & 13 deletions lib/src/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:flutter_skeleton/src/core/app/loading_provider.dart';
import 'package:flutter_skeleton/src/feature/locale/locale_provider.dart';
import 'package:flutter_skeleton/src/feature/theme/app_theme.dart';
import "../generated/l10n.dart";
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
Expand Down Expand Up @@ -44,8 +45,8 @@ class App extends ConsumerWidget {
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: S.delegate.supportedLocales,
theme: ThemeData(),
darkTheme: ThemeData.dark(),
theme: AppTheme.light().themeData,
darkTheme: AppTheme.dark().themeData,
themeMode: ref.watch(themeProvider),
routeInformationParser:
appRouter.defaultRouteParser(includePrefixMatches: true),
Expand All @@ -54,17 +55,6 @@ class App extends ConsumerWidget {
navigatorObservers: () => [AutoRouteObserver()],
),
builder: (context, widget) {
// ref.watch(sessionProvider);
// final isReady = ref.read(sessionProvider).ready;

// if (!isReady) {
// return const Scaffold(
// body: Center(
// child: CircularProgressIndicator(),
// ),
// );
// }

return Stack(
children: [
ResponsiveWrapper.builder(
Expand Down
10 changes: 8 additions & 2 deletions lib/src/core/app/singletons.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
import 'package:audio_service/audio_service.dart';
import 'package:flutter_skeleton/src/core/app_router.gr.dart';
import 'package:flutter_skeleton/src/feature/audio/audio_handler.dart';
import 'package:flutter_skeleton/src/feature/audio/audio_queue.dart';
import 'package:flutter_skeleton/src/feature/audio/playback_manager.dart';
import 'package:get_it/get_it.dart';
import 'package:flutter_skeleton/src/core/app/storage.dart';
import 'package:shared_preferences/shared_preferences.dart';

final singleton = GetIt.instance;

Future<void> initAppModule() async {
Future<void> initSingletons() async {
final sharedPreferences = await SharedPreferences.getInstance();
singleton.registerLazySingleton<SharedPreferences>(() => sharedPreferences);

singleton.registerSingleton<AppRouter>(AppRouter());

singleton.registerSingleton<AudioHandler>(await initAudioService());
singleton.registerSingleton<AudioQueue>(PlaylistSingletonImplementation());
singleton.registerLazySingleton<PlaybackManager>(() => PlaybackManager());
singleton.registerLazySingleton<Storage>(
() => StorageImplementation(),
);
Expand Down
16 changes: 4 additions & 12 deletions lib/src/core/app_router.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:auto_route/auto_route.dart';
import 'package:flutter_skeleton/src/core/dashboard.dart';
import 'package:flutter_skeleton/src/feature/audio/screens/queue_screen.dart';
import 'package:flutter_skeleton/src/feature/auth/screens/auth_landing_screen.dart';
import 'package:flutter_skeleton/src/feature/auth/screens/email_change_confirmation_screen.dart';
import 'package:flutter_skeleton/src/feature/auth/screens/login_screen.dart';
Expand All @@ -10,17 +11,18 @@ import 'package:flutter_skeleton/src/feature/category/screens/category_list_scre
import 'package:flutter_skeleton/src/feature/home/home_screen.dart';
import 'package:flutter_skeleton/src/feature/placeholder/placeholder_screen.dart';
import 'package:flutter_skeleton/src/feature/settings/settings_screen.dart';
import 'package:flutter_skeleton/src/feature/theme/styleguide_screen.dart';
import 'package:flutter_skeleton/src/feature/user/screens/edit_profile_screen.dart';
import 'package:flutter_skeleton/src/feature/user/screens/profile_screen.dart';
import 'package:flutter_skeleton/src/feature/user/screens/user_list_screen.dart';

const List<AutoRoute> appRoutes = [
AutoRoute(initial: true, path: '/', page: AuthLandingScreen),
// authRouter,
AutoRoute(path: '/auth/login', page: LoginScreen),
AutoRoute(path: '/auth/register', page: RegisterScreen),
AutoRoute(
path: '/auth/confirm/phone-number', page: TwoFactorConfirmationScreen),
AutoRoute(path: '/style-guide', page: StyleguideScreen),
AutoRoute(path: '/settings', page: SettingsScreen),
AutoRoute(path: '/settings/profile', page: EditProfileScreen),
AutoRoute(path: '/update-password/:token', page: UpdatePasswordScreen),
Expand All @@ -32,17 +34,6 @@ const List<AutoRoute> appRoutes = [
@AdaptiveAutoRouter(replaceInRouteName: 'Page,Route,Screen', routes: appRoutes)
class $AppRouter {}

const authRouter = AutoRoute(
path: "/auth",
name: "AuthRouter",
page: EmptyRouterPage,
children: [
AutoRoute(path: 'login', page: LoginScreen),
AutoRoute(path: 'register', page: RegisterScreen),
AutoRoute(path: 'confirm/phone-number', page: TwoFactorConfirmationScreen),
],
);

const dashboardTabRouter = AutoRoute(
path: "/dashboard",
page: DashboardContainer,
Expand All @@ -55,6 +46,7 @@ const dashboardTabRouter = AutoRoute(
children: [
AutoRoute(path: "", page: HomeScreen),
AutoRoute(path: "placeholder", page: PlaceholderScreen),
AutoRoute(path: "queue", page: QueueScreen)
],
),
AutoRoute(
Expand Down
Loading

0 comments on commit 580ad3b

Please sign in to comment.