Чтобы создать синглтон с параметрами в Dart, вы можете следовать примеру ниже:
class MySingleton {
final int parameter1;
final String parameter2;
static MySingleton _instance;
factory MySingleton(int parameter1, String parameter2) {
_instance ??= MySingleton._internal(parameter1, parameter2);
return _instance;
}
MySingleton._internal(this.parameter1, this.parameter2);
// Your singleton methods here
}
В приведенном выше коде мы определяем класс под названием MySingleton, который имеет два параметра: parameter1типа intи parameter2типа String. Класс также имеет частную статическую переменную _instanceтипа MySingleton.
Конструктор фабрики MySingletonпринимает параметры parameter1и parameter2. Он проверяет, имеет ли _instanceзначение NULL, и, если да, создает новый экземпляр MySingleton, вызывая частный конструктор _internalс предоставленными параметрами. После первого создания последующие вызовы конструктора фабрики вернут тот же экземпляр, хранящийся в _instance.
Вот пример использования синглтона:
void main() {
var singleton1 = MySingleton(10, 'Hello');
var singleton2 = MySingleton(20, 'World');
print(singleton1.parameter1); // Output: 10
print(singleton1.parameter2); // Output: Hello
print(singleton2.parameter1); // Output: 10 (same instance as singleton1)
print(singleton2.parameter2); // Output: Hello (same instance as singleton1)
print(identical(singleton1, singleton2)); // Output: true (same instance)
}
В этом примере мы создаем два экземпляра MySingletonс разными значениями параметров. Однако, поскольку это синглтон, и singleton1, и singleton2относятся к одному и тому же экземпляру, что подтверждается проверкой identical.