mirror of
https://github.com/johrpan/musicus_mobile.git
synced 2025-10-26 18:57:25 +01:00
119 lines
3.1 KiB
Dart
119 lines
3.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:musicus_database/musicus_database.dart';
|
|
|
|
import '../selectors/ensemble.dart';
|
|
import '../selectors/instruments.dart';
|
|
import '../selectors/person.dart';
|
|
|
|
class PerformanceEditor extends StatefulWidget {
|
|
final PerformanceInfo performanceInfo;
|
|
|
|
PerformanceEditor({
|
|
this.performanceInfo,
|
|
});
|
|
|
|
@override
|
|
_PerformanceEditorState createState() => _PerformanceEditorState();
|
|
}
|
|
|
|
class _PerformanceEditorState extends State<PerformanceEditor> {
|
|
Person person;
|
|
Ensemble ensemble;
|
|
Instrument role;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
|
|
if (widget.performanceInfo != null) {
|
|
person = widget.performanceInfo.person;
|
|
ensemble = widget.performanceInfo.ensemble;
|
|
role = widget.performanceInfo.role;
|
|
}
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: Text('Edit performer'),
|
|
actions: <Widget>[
|
|
FlatButton(
|
|
child: Text('DONE'),
|
|
onPressed: () => Navigator.pop(
|
|
context,
|
|
PerformanceInfo(
|
|
person: person,
|
|
ensemble: ensemble,
|
|
role: role,
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
body: ListView(
|
|
children: <Widget>[
|
|
ListTile(
|
|
title: Text('Person'),
|
|
subtitle: Text(person != null
|
|
? '${person.firstName} ${person.lastName}'
|
|
: 'Select person'),
|
|
onTap: () async {
|
|
final Person newPerson = await Navigator.push(
|
|
context,
|
|
MaterialPageRoute(
|
|
builder: (context) => PersonsSelector(),
|
|
fullscreenDialog: true,
|
|
),
|
|
);
|
|
|
|
if (newPerson != null) {
|
|
setState(() {
|
|
person = newPerson;
|
|
});
|
|
}
|
|
},
|
|
),
|
|
ListTile(
|
|
title: Text('Ensemble'),
|
|
subtitle: Text(ensemble?.name ?? 'Select ensemble'),
|
|
onTap: () async {
|
|
final Ensemble newEnsemble = await Navigator.push(
|
|
context,
|
|
MaterialPageRoute(
|
|
builder: (context) => EnsembleSelector(),
|
|
fullscreenDialog: true,
|
|
),
|
|
);
|
|
|
|
if (newEnsemble != null) {
|
|
setState(() {
|
|
ensemble = newEnsemble;
|
|
});
|
|
}
|
|
},
|
|
),
|
|
ListTile(
|
|
title: Text('Role'),
|
|
subtitle: Text(role?.name ?? 'Select instrument/role'),
|
|
onTap: () async {
|
|
final Instrument newRole = await Navigator.push(
|
|
context,
|
|
MaterialPageRoute(
|
|
builder: (context) => InstrumentsSelector(),
|
|
fullscreenDialog: true,
|
|
),
|
|
);
|
|
|
|
if (newRole != null) {
|
|
setState(() {
|
|
role = newRole;
|
|
});
|
|
}
|
|
},
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|