browser.dart 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. this.selectedArtist = artist.obs;
  27. this._jumpToAlbums();
  28. }
  29. void onSelectAlbum(String artist, String album) {
  30. this.selectedAlbum = album.obs;
  31. this._jumpToSongs();
  32. }
  33. void onSelectSong(int songId) {
  34. controller.playSong(songId);
  35. }
  36. @override
  37. Widget build(BuildContext context) {
  38. return PageView(
  39. controller: pageController,
  40. children: <Widget>[
  41. Artists(onSelect: this.onSelectArtist),
  42. Obx(() => Albums(artist: this.selectedArtist.value, onSelect: this.onSelectAlbum)),
  43. Obx(() => Songs(
  44. artist: this.selectedArtist.value,
  45. album: this.selectedAlbum.value,
  46. onSelect: this.onSelectSong,
  47. )),
  48. ],
  49. pageSnapping: true,
  50. );
  51. }
  52. }