Lav Sharma
Lav Sharma

Reputation: 339

I am trying to implement a onTap() fucntion in PopUpMenu but I am unable to do so

import 'package:flutter/material.dart';
import 'package:ssrpa/ui/forgot_password.dart';
import 'package:ssrpa/admin/admin_page2.dart';

class PopUpMenu extends StatelessWidget {
  VoidCallback onEnable;
  VoidCallback onDisable;
  VoidCallback onDelete;

  PopUpMenu({this.onEnable, this.onDisable, this.onDelete});

  void showMenuSelection(String value) {
    switch (value) {
      case 'Enable':
        onEnable();
        break;
      case 'Disable':
        onDisable();
        break;
      case 'Delete':
        onDelete();
        break;
    // Other cases for other menu options
    }
  }

  @override
  Widget build(BuildContext context) {
    return PopupMenuButton<String>(
      padding: EdgeInsets.zero,
      icon: Icon(Icons.more_vert),
      onSelected: showMenuSelection,
      itemBuilder: (BuildContext context) => <PopupMenuEntry<String>>[
        const PopupMenuItem<String>(
            value: 'Enable User',
            child: ListTile(
                title: Text('Enable User'))),
        const PopupMenuItem<String>(
            value: 'Disable User',
            child: ListTile(
                title: Text('Disable User'))),
        const PopupMenuItem<String>(
            value: 'Delete User',
            child: ListTile(
                title: Text('Delete User')))

      ]
    );
  }
}

Upvotes: 0

Views: 550

Answers (1)

Amir
Amir

Reputation: 2355

the value strings you send in popup menu item is not match with your switch cases

import 'package:flutter/material.dart';
import 'package:ssrpa/ui/forgot_password.dart';
import 'package:ssrpa/admin/admin_page2.dart';

class PopUpMenu extends StatelessWidget {
  VoidCallback onEnable;
  VoidCallback onDisable;
  VoidCallback onDelete;

  PopUpMenu({this.onEnable, this.onDisable, this.onDelete});

  void showMenuSelection(String value) {
    switch (value) {
      case 'Enable User':
        onEnable();
        break;
      case 'Disable User':
        onDisable();
        break;
      case 'Delete User':
        onDelete();
        break;
    // Other cases for other menu options
    }
  }

  @override
  Widget build(BuildContext context) {
    return PopupMenuButton<String>(
      padding: EdgeInsets.zero,
      icon: Icon(Icons.more_vert),
      onSelected: showMenuSelection,
      itemBuilder: (BuildContext context) => <PopupMenuEntry<String>>[
        const PopupMenuItem<String>(
            value: 'Enable User',
            child: ListTile(
                title: Text('Enable User'))),
        const PopupMenuItem<String>(
            value: 'Disable User',
            child: ListTile(
                title: Text('Disable User'))),
        const PopupMenuItem<String>(
            value: 'Delete User',
            child: ListTile(
                title: Text('Delete User')))

      ]
    );
  }
}

Upvotes: 2

Related Questions