anchor.diff:  
       // Content
       if (_songs != null) {
  -      slivers.add(SliverList(
  -        delegate: SliverChildListDelegate(_songs.map((song) => Song(song, widget.album.artwork)).toList()),
  -      ));
  +      final discs = _splitIntoDiscs(_songs);
  +      for (var disc in discs) {
  +        slivers.add(SliverList(
  +          delegate: SliverChildListDelegate([
  +            Disc(
  +              disc,
  +              discCount: discs.length,
  +              albumArtwork: widget.album.artwork,
  +            )
  +          ]),
  +        ));
  +      }
       }
   
       return Scaffold(
  
positive.code:         physics: AlwaysScrollableScrollPhysics(parent: BouncingScrollPhysics()),
          slivers: slivers,
        ),
      );
    }
  }
  
negative.code: 
      setState(() {
        _songs = songs;
      });
    }
  
    List<DiscData> _splitIntoDiscs(List<dto.Song> songs) {
      return songs.fold(<DiscData>[], (discs, song) {
        if (discs.isEmpty || discs.last.discNumber != song.discNumber) {
          discs.add(DiscData(song.discNumber, []));
        }
        discs.last.songs.add(song);
        return discs;
      });
    }
  
  