Does Dart have childSelector in event function like jQuery on()?

Issue

Does Dart have childSelector in event function like jQuery on()? Because I want fire contextmenu event only if mouse hover specific element type.

This is my javascript code.

 var $contextMenu = $("#context-menu");
 $("body").on("contextmenu", "table tr", function(e) {
 $contextMenu.css({
     display: "block",
     left: e.pageX,
     top: e.pageY });
   return false;
 });

But I don’t know how to check if hover “table tr” in my Dart code.

 var body = querySelector('body');
 var contextMenu =querySelector('#context-menu');
 // fire in everywhere 
 body.onContextMenu.listen((e) {
    e.preventDefault();
    contextMenu.style.display = 'block';
    contextMenu.style.left = "${e.page.x}px";
    contextMenu.style.top  =  "${e.page.y}px";     
 }

Solution

You can filter events :

body.onContextMenu.where((e) => e.target.matchesWithAncestors("table tr"))
    .listen((e) {
   e.preventDefault();
   contextMenu.style.display = 'block';
   contextMenu.style.left = "${e.page.x}px";
   contextMenu.style.top  =  "${e.page.y}px";
});

Answered By – Alexandre Ardhuin

Answer Checked By – Dawn Plyler (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *