Skip to content

Commit 07dcaf0

Browse files
committed
fixed bug with loading songs & album image
1 parent 8031e1d commit 07dcaf0

13 files changed

+119
-91
lines changed

lib/constants.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ abstract class ConstantHTTP {
8585
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
8686
'DNT': '1',
8787
'cookie':
88-
'remixusid=DELETED; remixflash=0.0.0; remixscreen_width=1920; remixscreen_height=1080; remixscreen_dpr=1; remixscreen_depth=24; remixscreen_orient=1; remixscreen_winzoom=1; remixseenads=0; remixlhk==DELETED; ',
88+
'remixflash=0.0.0; remixscreen_width=1920; remixscreen_height=1080; remixscreen_dpr=1; remixscreen_depth=24; remixscreen_orient=1; remixscreen_winzoom=1; remixseenads=0;',
8989
'Connection': 'keep-alive',
9090
'Accept-Encoding': 'gzip, deflate',
9191
'Accept-Language': 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',

lib/global/global_parameters.dart

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ abstract class GlobalParameters {
2222
ValueNotifier('SplashScreen');
2323

2424
static List<Playlist> playlists = List.generate(5, (index) => Playlist());
25-
static List<Song> songs = <Song>[];
25+
static ValueNotifier<List<Song>> songs = ValueNotifier(<Song>[]);
2626

2727
static final SnappingSheetController snappingSheetController =
2828
SnappingSheetController();
@@ -31,7 +31,7 @@ abstract class GlobalParameters {
3131
static AnimationController circleController;
3232
static AnimationController radiusController;
3333
static final ValueNotifier<bool> playNotifier = ValueNotifier(false);
34-
static final ValueNotifier<Song> currentSong = ValueNotifier(songs[0]);
34+
static final ValueNotifier<Song> currentSong = ValueNotifier(songs.value.isNotEmpty ? songs.value[0] : Song());
3535
static int songNumber = 0;
3636
static final ValueNotifier<double> songSeconds = ValueNotifier(0.0);
3737
static final ValueNotifier<bool> shuffleMode = ValueNotifier(false);
@@ -52,16 +52,16 @@ abstract class GlobalParameters {
5252
}
5353

5454
static void playSongByID(int id) async {
55-
songNumber = songs.indexWhere((s) => s.id == id);
56-
Song nextSong = songs[songNumber];
55+
songNumber = songs.value.indexWhere((s) => s.id == id);
56+
Song nextSong = songs.value[songNumber];
5757
await nextSong.generateColors();
5858
currentSong.value = nextSong;
5959
songSeconds.value = 0;
6060
}
6161

6262
static void playSongByIndex(int index) async {
6363
songNumber = index;
64-
Song nextSong = songs[songNumber];
64+
Song nextSong = songs.value[songNumber];
6565
await nextSong.generateColors();
6666
currentSong.value = nextSong;
6767
songSeconds.value = 0;
@@ -71,32 +71,32 @@ abstract class GlobalParameters {
7171
if (songNumber != 0) {
7272
songNumber--;
7373
} else {
74-
songNumber = songs.length - 1;
74+
songNumber = songs.value.length - 1;
7575
}
7676
}
7777

7878
static void previousSong() async {
79-
if (songs.length > 0) {
79+
if (songs.value.length > 0) {
8080
moveToPreviousIndex();
81-
Song song = songs[songNumber];
81+
Song song = songs.value[songNumber];
8282
await song.generateColors();
8383
currentSong.value = song;
8484
songSeconds.value = 0;
8585
}
8686
}
8787

8888
static void moveToNextIndex() {
89-
if (songNumber != songs.length - 1) {
89+
if (songNumber != songs.value.length - 1) {
9090
songNumber++;
9191
} else {
9292
songNumber = 0;
9393
}
9494
}
9595

9696
static void nextSong() async {
97-
if (songs.length > 0) {
97+
if (songs.value.length > 0) {
9898
moveToNextIndex();
99-
Song song = songs[songNumber];
99+
Song song = songs.value[songNumber];
100100
await song.generateColors();
101101
currentSong.value = song;
102102
songSeconds.value = 0;

lib/models/song.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ class Song {
3737
final randomInstance = Random();
3838

3939
Future<void> generateColors() async {
40-
if(albumImageUrl.isEmpty) {
41-
await getAlbumImageUrl();
40+
if(albumImageUrl.isEmpty && title!= null) {
41+
getAlbumImageUrl();
4242
}
4343
if (firstColor == null || secondColor == null) {
4444
PaletteGenerator pg = await _getPrimaryColor();
@@ -62,7 +62,7 @@ class Song {
6262
Response response;
6363
try {
6464
response = await User.dio.get(
65-
'${ConstantHTTP.vkAlbumUrl}${GlobalParameters.currentSong.value.albumUrl}',
65+
'${ConstantHTTP.vkAlbumUrl}$albumUrl',
6666
options:
6767
Options(responseType: ResponseType.bytes, followRedirects: false),
6868
);
@@ -87,7 +87,7 @@ class Song {
8787
cutStart: true,
8888
);
8989

90-
GlobalParameters.currentSong.value.albumImageUrl = Win1251Decoder.decode(BytesService.getInts(data));
90+
albumImageUrl = Win1251Decoder.decode(BytesService.getInts(data));
9191
}
9292
}
9393

lib/screens/home_screen.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:animated_text_kit/animated_text_kit.dart';
22
import 'package:codeine/global/global_parameters.dart';
33
import 'package:codeine/models/user.dart';
4+
import 'package:codeine/services/music_service.dart';
45
import 'package:codeine/widgets/music_player.dart';
56
import 'package:codeine/widgets/music_sliver.dart';
67
import 'package:codeine/widgets/search_bar.dart';
@@ -11,6 +12,7 @@ class HomeScreen extends StatelessWidget {
1112

1213
@override
1314
Widget build(BuildContext context) {
15+
MusicService.getAllMusic();
1416
return Container(
1517
decoration: BoxDecoration(
1618
color: Theme.of(context).scaffoldBackgroundColor,
@@ -40,8 +42,6 @@ class HomeScreen extends StatelessWidget {
4042
),
4143
MusicSliver(
4244
trackTitle: 'Мои треки',
43-
playlists: GlobalParameters.playlists,
44-
songs: GlobalParameters.songs,
4545
),
4646
],
4747
),

lib/screens/main_screen.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,15 @@ class MainScreen extends StatelessWidget {
1212
User u = User();
1313
await u.init();
1414

15+
//AuthService.logOut();
16+
1517
AuthStatus status = await AuthService.checkCookie();
1618
switch(status){
1719
case AuthStatus.cookies:
1820
status = await AuthService.fetchUserData();
1921
switch(status){
2022
case AuthStatus.noInternet:
2123
case AuthStatus.loggedIn:
22-
await MusicService.getAllMusic();
2324
GlobalParameters.currentPage.value = 'HomeScreen';
2425
break;
2526
case AuthStatus.loggedOut:

lib/services/auth_service.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,15 @@ abstract class AuthService {
8686
String value = domains[key].toString();
8787
value = value.substring(value.indexOf(key));
8888
value = value.substring(0, value.indexOf(';'));
89-
if (key == 'remixuas' || key == 'remixtmr_login')
90-
continue;
91-
else if (key == 'remixsid') value = key + '==DELETED';
89+
// if (key == 'remixuas' || key == 'remixtmr_login')
90+
// continue;
91+
// else if (key == 'remixsid') value = key + '=DELETED';
9292
cookies += value + '; ';
9393
}
9494
cookies = cookies.substring(0, cookies.length - 2);
95+
//cookies += '; '+ 'remixbdr=0';
9596
User.dio.options.headers['cookie'] = cookies;
97+
print(User.dio.options.headers['cookie']);
9698
}
9799
return AuthStatus.cookies;
98100
}

lib/services/music_service.dart

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ abstract class MusicService {
2020
'${ConstantHTTP.vkMusicURL}${User.id}',
2121
queryParameters: {'section': 'all'},
2222
options:
23-
Options(responseType: ResponseType.bytes, followRedirects: false),
23+
Options(responseType: ResponseType.bytes, followRedirects: true),
2424
);
2525
} on DioError catch (e) {
2626
if (GlobalParameters.connectionStatus.value ==
@@ -49,7 +49,7 @@ abstract class MusicService {
4949
);
5050
songDivs.removeAt(0);
5151

52-
GlobalParameters.songs.clear();
52+
List<Song> songs = <Song>[];
5353
for (var div in songDivs) {
5454
String dataAudio = BytesService.subByte(
5555
data: div,
@@ -88,7 +88,11 @@ abstract class MusicService {
8888
}catch(e){
8989
//
9090
}
91-
GlobalParameters.songs.add(newSong);
91+
songs.add(newSong);
92+
}
93+
GlobalParameters.songs.value = songs;
94+
if (GlobalParameters.currentSong.value.title==null){
95+
GlobalParameters.currentSong.value = GlobalParameters.songs.value[0];
9296
}
9397
return MusicStatus.ok;
9498
}

lib/widgets/bottom_music_player.dart

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,18 +98,24 @@ class _BottomMusicPlayerState extends State<BottomMusicPlayer>
9898
return Column(
9999
crossAxisAlignment:
100100
CrossAxisAlignment.start,
101-
mainAxisAlignment: MainAxisAlignment.center,
101+
mainAxisAlignment:
102+
MainAxisAlignment.center,
102103
children: [
103104
Text(
104105
GlobalParameters
105-
.currentSong.value?.title,
106+
.currentSong.value?.title ??
107+
'',
106108
style: Theme.of(context)
107109
.textTheme
108110
.bodyText1,
109111
overflow: TextOverflow.ellipsis,
110112
),
111113
Text(
112-
'${GlobalParameters.currentSong.value.artists.sublist(1).fold<String>(GlobalParameters.currentSong.value.artists.first.name, (prev, next) => prev += ', ' + next.name)}',
114+
GlobalParameters.currentSong.value
115+
.title !=
116+
null
117+
? '${GlobalParameters.currentSong.value.artists.sublist(1).fold<String>(GlobalParameters.currentSong.value.artists.first.name, (prev, next) => prev += ', ' + next.name)}'
118+
: '',
113119
style: Theme.of(context)
114120
.textTheme
115121
.bodyText2

lib/widgets/middle_music_player.dart

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,21 @@ class _MiddleMusicPlayerState extends State<MiddleMusicPlayer> {
2929
),
3030
SizedBox(height: 5),
3131
Container(
32-
width: size.width*0.8,
32+
width: size.width * 0.8,
3333
child: Text(
34-
GlobalParameters.currentSong.value.title,
34+
GlobalParameters.currentSong.value?.title ?? '',
3535
style: Theme.of(context).textTheme.headline3,
3636
overflow: TextOverflow.ellipsis,
3737
textAlign: TextAlign.center,
3838
),
3939
),
4040
SizedBox(height: 5),
4141
Container(
42-
width: size.width*0.8,
42+
width: size.width * 0.8,
4343
child: Text(
44-
'${GlobalParameters.currentSong.value.artists.sublist(1).fold<String>(GlobalParameters.currentSong.value.artists.first.name, (prev, next) => prev += ', ' + next.name)}',
44+
GlobalParameters.currentSong.value.title != null
45+
? '${GlobalParameters.currentSong.value.artists.sublist(1).fold<String>(GlobalParameters.currentSong.value.artists.first.name, (prev, next) => prev += ', ' + next.name)}'
46+
: '',
4547
style: Theme.of(context).textTheme.bodyText2,
4648
overflow: TextOverflow.ellipsis,
4749
textAlign: TextAlign.center,
@@ -94,7 +96,7 @@ class _MiddleMusicPlayerState extends State<MiddleMusicPlayer> {
9496
Theme.of(context).scaffoldBackgroundColor,
9597
secondColor:
9698
GlobalParameters.currentSong.value.secondColor ??
97-
Theme.of(context).scaffoldBackgroundColor,
99+
Theme.of(context).focusColor,
98100
);
99101
}),
100102
),
@@ -107,11 +109,11 @@ class _MiddleMusicPlayerState extends State<MiddleMusicPlayer> {
107109
mainAxisAlignment: MainAxisAlignment.spaceBetween,
108110
children: [
109111
Text(
110-
Song.time(GlobalParameters.songSeconds.value.toInt()),
112+
GlobalParameters.currentSong.value.title != null ? Song.time(GlobalParameters.songSeconds.value.toInt()) : '',
111113
style: Theme.of(context).textTheme.subtitle1,
112114
),
113115
Text(
114-
GlobalParameters.currentSong.value.duration,
116+
GlobalParameters.currentSong.value.title != null ? GlobalParameters.currentSong.value.duration : '',
115117
style: Theme.of(context).textTheme.subtitle1,
116118
),
117119
],

lib/widgets/music_player.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ class _MusicPlayerState extends State<MusicPlayer>
9090
MediaQuery.of(context).padding.top;
9191
final double firstSizedBox = 10.0;
9292
final double firstContainer = 45.0;
93-
final double secondSizedBox = safeHeight * 0.05;
93+
final double secondSizedBox = safeHeight * 0.1;
9494
final double bigCircleRadius = 107.0;
9595
initTween(
9696
halfOfHeight: size.height / 2,

0 commit comments

Comments
 (0)