Skip to content
Snippets Groups Projects
Commit f89d22ab authored by Erik Hinkelmanns's avatar Erik Hinkelmanns
Browse files

- update/fixed page routing

- fixed title render bug when skipping a song
parent d4f29893
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@ import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_custom_clippers/flutter_custom_clippers.dart';
import '../main.dart';
import '../widgets/MusicPlayerState.dart';
import 'CustomSearchDelegate.dart';
import '../homepage.dart';
......@@ -210,7 +211,7 @@ class _ClassificationPageState extends State<ClassificationPage> {
onPressed: () {
print(changeFirebase().checkIfEverythingSelected(snapshot).toString());
if (changeFirebase().checkIfEverythingSelected(snapshot)) {
Navigator.push(context, MaterialPageRoute(builder: (context) => HUD()));
Navigator.push(context, MaterialPageRoute(builder: (context)=>MusicPlayerState(child: const HUD())));
}
else{
setState(() {
......
......@@ -115,50 +115,10 @@ class HomePage extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
MusicPlayerState.of(context).connected
? Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
MusicPlayerState.of(context).albumImage != null
? Padding(
padding: const EdgeInsets.only(top: 30),
child: DropShadowImage(
image: Image(
image: MusicPlayerState.of(context)
.albumImage!
.image,
width: 250,
height: 250,
),
offset: Offset(10, 10),
scale: 1,
blurRadius: 10,
borderRadius: 20,
),
)
: MusicPlayerState.of(context).spotifyImageWidget(),
Container(
alignment: Alignment.topCenter,
padding: const EdgeInsets.all(2),
child: Column(children: [
Padding(
padding: const EdgeInsets.only(top: 20),
child: Text(track.name,
style: const TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
color: Colors.black)),
),
Padding(
padding: const EdgeInsets.only(top: 1),
child: Text(track.album.name),
),
]))
],
StreamBuilder<void>(
stream: MusicPlayerState.of(context).playStatedStream.stream,
builder: (context, _) => SongInfo(),
),
)
: const Text('Connect to see an image...'),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
......@@ -168,8 +128,8 @@ class HomePage extends StatelessWidget {
padding: EdgeInsets.zero,
child: Icon(Icons.skip_previous_outlined)),
onPressed: () {
skipPrevious;
MusicPlayerState.of(context).rebuildStream.sink.add(null);
var state = MusicPlayerState.of(context);
SpotifySdk.skipPrevious().then((value) => state.updatePlayerState());
}),
StreamBuilder<void>(
stream: MusicPlayerState.of(context).playStatedStream.stream,
......@@ -181,8 +141,8 @@ class HomePage extends StatelessWidget {
padding: EdgeInsets.zero,
child: Icon(Icons.skip_next_outlined)),
onPressed: () {
skipNext();
MusicPlayerState.of(context).rebuildStream.sink.add(null);
var state = MusicPlayerState.of(context);
SpotifySdk.skipNext().then((value) => state.updatePlayerState());
}),
],
),
......@@ -283,6 +243,69 @@ class HomePage extends StatelessWidget {
}
}
class SongInfo extends StatelessWidget{
const SongInfo({
Key? key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
Track? track;
if (MusicPlayerState.of(context).playerState == null) {
return const Text("PlayState is Null");
} else {
track = MusicPlayerState.of(context).playerState!.track;
}
if (MusicPlayerState.of(context).connected && track != null){
return Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
MusicPlayerState.of(context).albumImage != null
? Padding(
padding: const EdgeInsets.only(top: 1),
child: DropShadowImage(
image: Image(
image: MusicPlayerState.of(context)
.albumImage!
.image,
width: 300,
height: 300,
),
offset: Offset(10, 10),
scale: 1,
blurRadius: 10,
borderRadius: 20,
),
)
: MusicPlayerState.of(context).spotifyImageWidget(MusicPlayerState.of(context).currentTrackImageUri!),
Container(
alignment: Alignment.topCenter,
padding: const EdgeInsets.all(2),
child: Column(children: [
Padding(
padding: const EdgeInsets.only(top: 20),
child: Text(track.name,
style: const TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
color: Colors.black)),
),
Padding(
padding: const EdgeInsets.only(top: 1),
child: Text(track.album.name),
),
]))
],
),
);
} else {
return const Text('Connect to see an image...');
}
}
}
class ControlButtons extends StatelessWidget {
const ControlButtons({
Key? key,
......
import 'package:ambient/classification/classification.dart';
import 'package:ambient/loginRegister/registration.dart';
import 'package:ambient/loginRegister/widgets.dart';
import 'package:ambient/widgets/MusicPlayerState.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
......@@ -89,7 +90,8 @@ class _LoginPageState extends State<LoginPage> {
style: TextStyle(color: Colors.red),)
: const SizedBox(),
loginRegisterButton(context, true, (){
FirebaseAuth.instance.signInWithEmailAndPassword(
//Todo undo comment
/*FirebaseAuth.instance.signInWithEmailAndPassword(
email: _emailTextController.text,
password: _passwordTextController.text).then((value) {
Navigator.push(context, MaterialPageRoute(builder: (context)=>const HUD()));
......@@ -97,7 +99,8 @@ class _LoginPageState extends State<LoginPage> {
setState(() {
_wrongInput = true;
});
});
});*/
Navigator.push(context, MaterialPageRoute(builder: (context)=>MusicPlayerState(child: const HUD())));
}),
registrationPage(),
......
import 'package:ambient/loginRegister/registration.dart';
import 'package:ambient/searchpage.dart';
import 'package:ambient/widgets/MusicPlayerState.dart';
import 'package:ambient/widgets/navbars.dart';
......@@ -5,9 +6,7 @@ import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:spotify_sdk/models/player_state.dart';
import 'package:spotify_sdk/models/track.dart';
import 'package:spotify_sdk/spotify_sdk.dart';
import 'homepage.dart';
import 'moodpage.dart';
......@@ -24,12 +23,14 @@ class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: MusicPlayerState(
child: const HUD(),
//Todo change HUD() => RegistrationPage()
),
home: RegistrationPage(),
/**
* moin
* test123@test.com
* moin
*/
);
}
}
......@@ -126,6 +127,7 @@ class MusicBar extends StatelessWidget {
child: Text('PlayState or track is Null'),
);
} else {
//Todo maybe undo
MusicPlayerState.of(context).currentTrackImageUri = track!.imageUri;
}
return Container(
......@@ -144,7 +146,7 @@ class MusicBar extends StatelessWidget {
child: Column(children: [
Padding(
padding: const EdgeInsets.only(bottom: 5, top: 5),
child: Text(track.name,
child: Text(track!.name,
style: const TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
......
......@@ -7,7 +7,6 @@ import 'package:spotify_sdk/models/image_uri.dart';
import 'package:spotify_sdk/models/player_state.dart';
import 'package:spotify_sdk/spotify_sdk.dart';
class MusicPlayerState extends InheritedWidget {
MusicPlayerState({super.key, required super.child});
......@@ -19,7 +18,6 @@ class MusicPlayerState extends InheritedWidget {
late ImageUri? currentTrackImageUri;
Image? albumImage;
static MusicPlayerState? maybeOf(BuildContext context) =>
context.dependOnInheritedWidgetOfExactType<MusicPlayerState>();
......@@ -36,9 +34,9 @@ class MusicPlayerState extends InheritedWidget {
void updatePlayerState() async {
playerState = await getPlayerState();
//loadAlbumImage().then((value) => playStatedStream.sink.add(null));
currentTrackImageUri = playerState?.track?.imageUri;
spotifyImageWidget();
//rebuildStream.sink.add(null);
spotifyImageWidget(currentTrackImageUri!);
playStatedStream.sink.add(null);
}
......@@ -81,16 +79,19 @@ class MusicPlayerState extends InheritedWidget {
return connected;
}
Widget spotifyImageWidget() {
//Todo how does the FutureBuilder works
Widget spotifyImageWidget(ImageUri imageUri) {
print("-------------------------------------------------moin ${albumImage?.hashCode} --------------------------------");
return FutureBuilder(
future: SpotifySdk.getImage(
imageUri: currentTrackImageUri!,
imageUri: imageUri,
dimension: ImageDimension.large,
),
builder: (BuildContext context, AsyncSnapshot<Uint8List?> snapshot) {
if (snapshot.hasData) {
print("-------------------------------------------------bevor ${albumImage?.hashCode} --------------------------------");
albumImage = Image.memory(snapshot.data!);
print("-------------------------------------------------after ${albumImage?.hashCode} --------------------------------");
rebuildStream.sink.add(null);
return const Center(child: Text('Getting image...'));
} else if (snapshot.hasError) {
......@@ -110,6 +111,10 @@ class MusicPlayerState extends InheritedWidget {
});
}
Future<void> loadAlbumImage() async {
currentTrackImageUri = playerState?.track?.imageUri;
spotifyImageWidget(currentTrackImageUri!);
}
void setStatus(String code, {String? message}) {
var text = message ?? '';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment