| 
									
										
										
										
											2020-03-21 15:01:51 +01:00
										 |  |  | import 'package:flutter/material.dart'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import '../backend.dart'; | 
					
						
							|  |  |  | import '../database.dart'; | 
					
						
							| 
									
										
										
										
											2020-03-21 15:06:38 +01:00
										 |  |  | import '../editors/work.dart'; | 
					
						
							| 
									
										
										
										
											2020-04-19 18:36:46 +02:00
										 |  |  | import '../widgets/texts.dart'; | 
					
						
							| 
									
										
										
										
											2020-03-21 15:01:51 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | class WorkScreen extends StatelessWidget { | 
					
						
							|  |  |  |   final Work work; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   WorkScreen({ | 
					
						
							|  |  |  |     this.work, | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Widget build(BuildContext context) { | 
					
						
							|  |  |  |     final backend = Backend.of(context); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return Scaffold( | 
					
						
							|  |  |  |       appBar: AppBar( | 
					
						
							|  |  |  |         title: Text(work.title), | 
					
						
							| 
									
										
										
										
											2020-03-21 15:06:38 +01:00
										 |  |  |         actions: <Widget>[ | 
					
						
							|  |  |  |           IconButton( | 
					
						
							|  |  |  |             icon: const Icon(Icons.edit), | 
					
						
							|  |  |  |             onPressed: () { | 
					
						
							|  |  |  |               Navigator.push( | 
					
						
							|  |  |  |                 context, | 
					
						
							|  |  |  |                 MaterialPageRoute( | 
					
						
							|  |  |  |                   builder: (context) => WorkEditor( | 
					
						
							|  |  |  |                     work: work, | 
					
						
							|  |  |  |                   ), | 
					
						
							|  |  |  |                   fullscreenDialog: true, | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |               ); | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           ), | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2020-03-21 15:01:51 +01:00
										 |  |  |       ), | 
					
						
							| 
									
										
										
										
											2020-04-19 18:36:46 +02:00
										 |  |  |       body: StreamBuilder<List<Recording>>( | 
					
						
							|  |  |  |         stream: backend.db.recordingsByWork(work.id).watch(), | 
					
						
							| 
									
										
										
										
											2020-03-21 15:01:51 +01:00
										 |  |  |         builder: (context, snapshot) { | 
					
						
							|  |  |  |           if (snapshot.hasData) { | 
					
						
							|  |  |  |             return ListView.builder( | 
					
						
							|  |  |  |               itemCount: snapshot.data.length, | 
					
						
							|  |  |  |               itemBuilder: (context, index) { | 
					
						
							| 
									
										
										
										
											2020-04-19 18:36:46 +02:00
										 |  |  |                 final recording = snapshot.data[index]; | 
					
						
							| 
									
										
										
										
											2020-03-21 15:01:51 +01:00
										 |  |  |                 return ListTile( | 
					
						
							| 
									
										
										
										
											2020-04-19 18:36:46 +02:00
										 |  |  |                   title: PerformancesText(recording.id), | 
					
						
							|  |  |  |                   onTap: () async { | 
					
						
							| 
									
										
										
										
											2020-04-21 17:37:01 +02:00
										 |  |  |                     final tracks = backend.ml.tracks[recording.id]; | 
					
						
							|  |  |  |                     tracks.sort( | 
					
						
							|  |  |  |                         (t1, t2) => t1.track.index.compareTo(t2.track.index)); | 
					
						
							|  |  |  |                      | 
					
						
							|  |  |  |                     backend.player.addTracks(backend.ml.tracks[recording.id]); | 
					
						
							| 
									
										
										
										
											2020-04-19 18:36:46 +02:00
										 |  |  |                   }, | 
					
						
							| 
									
										
										
										
											2020-03-21 15:01:51 +01:00
										 |  |  |                 ); | 
					
						
							|  |  |  |               }, | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |           } else { | 
					
						
							|  |  |  |             return Container(); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       ), | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |