Add functionality to edit sheets with save and restore
This commit is contained in:
@@ -2,13 +2,15 @@ import 'dart:async';
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:sheetless/edit_bottom_sheet.dart';
|
||||
import 'package:sheetless/storage_helper.dart';
|
||||
import 'package:sheetless/upload_queue.dart';
|
||||
|
||||
class Sheet {
|
||||
final String uuid;
|
||||
final String name;
|
||||
final String composerUuid;
|
||||
final String composerName;
|
||||
String name;
|
||||
String composerUuid;
|
||||
String composerName;
|
||||
|
||||
Sheet({
|
||||
required this.uuid,
|
||||
@@ -92,6 +94,40 @@ class _SheetsWidgetState extends State<SheetsWidget> {
|
||||
_searchController.clear();
|
||||
}
|
||||
|
||||
void _openEditSheet(BuildContext context, Sheet sheet) {
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
isScrollControlled: true,
|
||||
builder: (_) => EditItemBottomSheet(
|
||||
sheet: sheet,
|
||||
onSheetEdited: (String newName, String newComposer) {
|
||||
if (newName != sheet.name) {
|
||||
storageHelper.writeChange(
|
||||
Change(
|
||||
type: ChangeType.sheetNameChange,
|
||||
sheetUuid: sheet.uuid,
|
||||
value: newName,
|
||||
),
|
||||
);
|
||||
}
|
||||
if (newComposer != sheet.composerName) {
|
||||
storageHelper.writeChange(
|
||||
Change(
|
||||
type: ChangeType.composerNameChange,
|
||||
sheetUuid: sheet.uuid,
|
||||
value: newComposer,
|
||||
),
|
||||
);
|
||||
}
|
||||
setState(() {
|
||||
sheet.name = newName;
|
||||
sheet.composerName = newComposer;
|
||||
});
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Column(
|
||||
@@ -134,6 +170,7 @@ class _SheetsWidgetState extends State<SheetsWidget> {
|
||||
widget.sheets.remove(sheet);
|
||||
widget.sheets.insert(0, sheet);
|
||||
}),
|
||||
onLongPress: () => _openEditSheet(context, sheet),
|
||||
);
|
||||
},
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user