alerDialog widget for renaming
This commit is contained in:
		
							parent
							
								
									a65c973dc7
								
							
						
					
					
						commit
						a7c30732f4
					
				
					 1 changed files with 67 additions and 33 deletions
				
			
		| 
						 | 
				
			
			@ -16,6 +16,7 @@ class FolderDrawer extends StatefulWidget {
 | 
			
		|||
 | 
			
		||||
class _FolderDrawerState extends State<FolderDrawer> {
 | 
			
		||||
  List<String> folders = [];
 | 
			
		||||
  final TextEditingController _renameController = TextEditingController();
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  void initState() {
 | 
			
		||||
| 
						 | 
				
			
			@ -48,7 +49,7 @@ class _FolderDrawerState extends State<FolderDrawer> {
 | 
			
		|||
                icon: Icon(Icons.more_vert),
 | 
			
		||||
                onPressed: () => {
 | 
			
		||||
                  ///show options
 | 
			
		||||
                  _showOptions(context)
 | 
			
		||||
                  _showOptions(context, folder)
 | 
			
		||||
                },
 | 
			
		||||
              ),
 | 
			
		||||
              onTap: () {
 | 
			
		||||
| 
						 | 
				
			
			@ -83,12 +84,46 @@ class _FolderDrawerState extends State<FolderDrawer> {
 | 
			
		|||
      ),
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
  void _showOptions(BuildContext context) async {
 | 
			
		||||
  final RenderBox overlay = Overlay.of(context).context.findRenderObject() as RenderBox;
 | 
			
		||||
 | 
			
		||||
  Future<bool> _renameDialog(String oldFolder) async {
 | 
			
		||||
    showDialog(
 | 
			
		||||
        context: context,
 | 
			
		||||
        builder: (BuildContext context) {
 | 
			
		||||
          return AlertDialog(
 | 
			
		||||
                      title: Text("Rename Mailbox"),
 | 
			
		||||
                      content: TextField(
 | 
			
		||||
          controller: _renameController,
 | 
			
		||||
          decoration: const InputDecoration(
 | 
			
		||||
            hintText: "New Name",
 | 
			
		||||
          ),
 | 
			
		||||
                      ),
 | 
			
		||||
                      actions: <Widget>[
 | 
			
		||||
          TextButton(
 | 
			
		||||
            onPressed: () {
 | 
			
		||||
              String newfolderName = _renameController.text;
 | 
			
		||||
              if (newfolderName.isNotEmpty) {
 | 
			
		||||
                //make an and to make sure there's two folders with the same name
 | 
			
		||||
                ApiService().renameFolder(oldFolder, newfolderName);
 | 
			
		||||
              }
 | 
			
		||||
              Navigator.of(context).pop();
 | 
			
		||||
            },
 | 
			
		||||
            child: const Text("Rename"),
 | 
			
		||||
          )
 | 
			
		||||
                      ],
 | 
			
		||||
                    );
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void _showOptions(BuildContext context, String folderName) async {
 | 
			
		||||
    final RenderBox overlay =
 | 
			
		||||
        Overlay.of(context).context.findRenderObject() as RenderBox;
 | 
			
		||||
    print(folderName);
 | 
			
		||||
    await showMenu<String>(
 | 
			
		||||
      context: context,
 | 
			
		||||
    position: RelativeRect.fromLTRB(100, 100, overlay.size.width, overlay.size.height),
 | 
			
		||||
      position: RelativeRect.fromLTRB(
 | 
			
		||||
          100, 100, overlay.size.width, overlay.size.height),
 | 
			
		||||
      items: <PopupMenuEntry<String>>[
 | 
			
		||||
        PopupMenuItem<String>(
 | 
			
		||||
          value: 'Rename',
 | 
			
		||||
| 
						 | 
				
			
			@ -103,19 +138,20 @@ class _FolderDrawerState extends State<FolderDrawer> {
 | 
			
		|||
      // Handle the action based on the selected menu item
 | 
			
		||||
      if (value == 'Rename') {
 | 
			
		||||
        // Logic for renaming the folder
 | 
			
		||||
      print('Rename folder');
 | 
			
		||||
        print('Rename folder $folderName');
 | 
			
		||||
        _renameDialog(folderName);
 | 
			
		||||
      } else if (value == 'Delete') {
 | 
			
		||||
        // Logic for deleting the folder
 | 
			
		||||
      print('Delete folder');
 | 
			
		||||
        print("Deleting $folderName");
 | 
			
		||||
        ApiService().deleteFolder(folderName);
 | 
			
		||||
        print('Deleted folder');
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class NewMailbox extends StatelessWidget {
 | 
			
		||||
  final ApiService apiService;
 | 
			
		||||
  // final Function(String) onFolderCreated;
 | 
			
		||||
  final TextEditingController _textFieldController = TextEditingController();
 | 
			
		||||
 | 
			
		||||
  NewMailbox({required this.apiService});
 | 
			
		||||
| 
						 | 
				
			
			@ -127,7 +163,7 @@ class NewMailbox extends StatelessWidget {
 | 
			
		|||
      content: TextField(
 | 
			
		||||
        controller: _textFieldController,
 | 
			
		||||
        decoration: const InputDecoration(
 | 
			
		||||
          hintText: "EPIC FOLDER", // Your custom hint text here
 | 
			
		||||
          hintText: "New Folder",
 | 
			
		||||
        ),
 | 
			
		||||
      ),
 | 
			
		||||
      actions: <Widget>[
 | 
			
		||||
| 
						 | 
				
			
			@ -138,9 +174,7 @@ class NewMailbox extends StatelessWidget {
 | 
			
		|||
 | 
			
		||||
            if (folderName.isNotEmpty) {
 | 
			
		||||
              apiService.createFolder(folderName);
 | 
			
		||||
              // onFolderCreated(folderName);
 | 
			
		||||
            }
 | 
			
		||||
            // apiService.createFolder(_textFieldController.text);
 | 
			
		||||
            Navigator.of(context).pop();
 | 
			
		||||
          },
 | 
			
		||||
          child: const Text("Approve"),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue