execute method
Implementation
@override
Future<bool?> execute(
String caller, String propertyOrFunction, List<dynamic> arguments) async {
/// setter
if (scope == null) return null;
var function = propertyOrFunction.toLowerCase().trim();
switch (function) {
case "open":
// open by index
var index = toInt(elementAt(arguments, 0));
if (index != null) {
this.index = index;
return true;
}
// open by id
var id = toStr(elementAt(arguments, 0));
if (id != null) {
var tab = tabs.firstWhereOrNull((t) => t.id == id);
if (tab != null) {
this.index = tabs.indexOf(tab);
return true;
}
}
// open by url
var url = toStr(elementAt(arguments, 0));
if (url != null) {
var tab = tabs.firstWhereOrNull((t) => t.url == url);
if (tab != null) {
this.index = tabs.indexOf(tab);
return true;
}
}
return true;
// close specified tab
case "close":
// close by index
var index = toInt(elementAt(arguments, 0));
if (index != null) {
if (index < 0) index = 0;
if (index >= tabs.length) index = tabs.length - 1;
deleteTab(tabs[index]);
return true;
}
// close by id
var id = toStr(elementAt(arguments, 0));
if (id != null) {
var tab = tabs.firstWhereOrNull((t) => t.id == id);
if (tab != null) {
deleteTab(tab);
return true;
}
}
// close by url
var url = toStr(elementAt(arguments, 0));
if (url != null) {
var tab = tabs.firstWhereOrNull((t) => t.url == url);
if (tab != null) {
deleteTab(tab);
return true;
}
}
return true;
case "add":
var url = toStr(elementAt(arguments, 0));
var title = toStr(elementAt(arguments, 1));
var closeable = toBool(elementAt(arguments, 2));
var icon = toStr(elementAt(arguments, 3));
showTab(url, title: title, closeable: closeable, icon: icon);
return true;
// close specified tab
case "next":
showNextTab();
return true;
case "prev":
case "previous":
showPreviousTab();
return true;
case "first":
showPreviousTab();
return true;
case "last":
showPreviousTab();
return true;
}
return super.execute(caller, propertyOrFunction, arguments);
}