browser.dart 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import 'package:flutter/widgets.dart';
  2. import 'package:get/get.dart';
  3. import 'package:gmus_mobile/components/albums.dart';
  4. import 'package:gmus_mobile/components/songs.dart';
  5. import './artists.dart';
  6. class Browser extends StatefulWidget {
  7. @override
  8. _BrowserWidgetState createState() => _BrowserWidgetState();
  9. }
  10. class _BrowserWidgetState extends State<Browser> {
  11. PageController pageController = PageController();
  12. void _jumpToPage(int page) {
  13. pageController.animateToPage(page, duration: Duration(milliseconds: 500), curve: Curves.ease);
  14. }
  15. void _jumpToAlbums() {
  16. this._jumpToPage(1);
  17. }
  18. void _jumpToSongs() {
  19. this._jumpToPage(2);
  20. }
  21. RxString selectedArtist;
  22. RxString selectedAlbum;
  23. void onSelectArtist(String artist) {
  24. print("onSelectArtist called $artist");
  25. this.selectedArtist = artist.obs;
  26. this._jumpToAlbums();
  27. }
  28. void onSelectAlbum(String artist, String album) {
  29. this.selectedAlbum = album.obs;
  30. this._jumpToSongs();
  31. }
  32. void onSelectSong(int songId) {
  33. print("Selecting song ID $songId");
  34. }
  35. @override
  36. Widget build(BuildContext context) {
  37. return PageView(
  38. controller: pageController,
  39. children: <Widget>[
  40. Artists(onSelect: this.onSelectArtist),
  41. Obx(() => Albums(artist: this.selectedArtist.value, onSelect: this.onSelectAlbum)),
  42. Obx(() => Songs(
  43. artist: this.selectedArtist.value,
  44. album: this.selectedAlbum.value,
  45. onSelect: this.onSelectSong,
  46. )),
  47. ],
  48. pageSnapping: true,
  49. );
  50. }
  51. }