Статический метод в Dart
Статический метод, как и статическое поле, относится
ко всему классу. Перед типом результата и именем пишут
static. Вызов записывают как Post.showCount()
без создания объекта:
class Post {
static int count = 0;
String title = "";
Post() {
count = count + 1;
}
static void showCount() {
print(count);
}
}
Вызовем конструктор и статический метод:
Post();
Post();
Post.showCount();
Внутри статического метода нет this для полей
конкретного объекта. Такой метод работает с общими
данными типа - здесь с count - или выполняет
действие, не привязанное к одной записи.
Несколько статических команд можно собрать в одном классе.
К ним обращаются только по имени Post:
class Post {
static String repeatLine(String text, int times) {
var parts = <String>[];
for (var i = 0; i < times; i++) {
parts.add(text);
}
return parts.join("\n");
}
static int clamp(int value, int min, int max) {
if (value < min) {
return min;
}
if (value > max) {
return max;
}
return value;
}
}
print(Post.repeatLine("go", 2));
print(Post.clamp(15, 0, 10));
Если команда логически относится к данным одного объекта, ее оставляют обычным методом экземпляра. Статический метод выбирают для общих операций и для вывода общих полей типа.
Сделайте класс Employee со статическим методом
line, который принимает строку и выводит ее.
Вызовите Employee.line("ok").
Сделайте класс Employee со статическим методом
square, который возвращает квадрат целого
числа. Выведите Employee.square(7).