Dart allows the user to create a callable class which allows the instance of the class to be called as a function. To allow an instance of your Dart class to be called like a function, implement the call() method.
Syntax:
class class_name {
... // class content
return_type call ( parameters ) {
... // call function content
}
}
In the above syntax, we can see that to create a callable class we have to define a call method with a return type and parameters within it.
Example:
Example1: Single callable class
class Student {
String call(String name, int age) {
return('Student name is $name and Age is $age');
}
}
void main() {
Student stu = new Student();
var msg = stu('Ghoghari',21); // Class instance called like a function.
print('Dart Callable class');
print(msg);
}
Output
Dart Callable class
Student name is Ghoghari and Age is 21
Explanation:
In the above code, We defined a call() function in the class Student that takes two arguments String name, integer age and return a message with this information. Then, we have created the object of class Student and called it like a function.
var msg = stu('Ghoghari',21);
Example2: Multiple callable class
class Student {
String call(String name, int age) {
return('Student name is $name and Age is $age');
}
}
class Employee {
int call(int empid, int age) {
return('Employee id is ${empid} and Age is ${age}');
}
}
void main() {
Student stu = new Student();
Employee emp = new Employee();
var msg = stu('Jinali',21); // Class instance called like a function.
var msg2 = emp(101,23); // Class instance called like a function.
print('Dart Callable class');
print(msg);
print(msg2);
}
Output
Dart Callable class
Student name is Jinali and Age is 21
Employee id is 101 and Age is 23
Explanation:
In the above code, we defined two callable functions in class Student and class Employee. The Employee class call() function accepts two parameters as String empid and int age. We called instances of both classes as callable functions.
var msg = stu('Jinali',21);
var msg2 = emp(101,23);