browser.dart 1.5 KB

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