diff --git a/lib/binding.dart b/lib/binding.dart index 927ed01..9302c0b 100644 --- a/lib/binding.dart +++ b/lib/binding.dart @@ -96,9 +96,6 @@ class Binding { /// /// return [Binding] Binding singeltone() { - if (_mode == Mode.PROVIDER_INSTANCE) { - _instance = _provider?.call(); - } _isSingeltone = true; return this; } @@ -113,5 +110,11 @@ class Binding { /// ENG: Resolve instance. /// /// return [T] - T? get provider => _provider?.call(); + T? get provider { + if (_isSingeltone) { + _instance ??= _provider?.call(); + return _instance; + } + return _provider?.call(); + } } diff --git a/lib/scope.dart b/lib/scope.dart index 44c11c3..6179d4b 100644 --- a/lib/scope.dart +++ b/lib/scope.dart @@ -112,9 +112,7 @@ class Scope { case Mode.INSTANCE: return binding.instance; case Mode.PROVIDER_INSTANCE: - return binding.isSingeltone - ? binding.instance - : binding.provider; + return binding.provider; default: return null; }