diff --git a/packages/katana_scoped/example/pubspec.lock b/packages/katana_scoped/example/pubspec.lock index 4fb4acc7f..6656f503f 100644 --- a/packages/katana_scoped/example/pubspec.lock +++ b/packages/katana_scoped/example/pubspec.lock @@ -234,7 +234,7 @@ packages: name: glob url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" graphs: dependency: transitive description: @@ -311,7 +311,7 @@ packages: path: ".." relative: true source: path - version: "1.2.1" + version: "1.2.2" lints: dependency: transitive description: diff --git a/packages/katana_scoped/lib/value/cache.dart b/packages/katana_scoped/lib/value/cache.dart index 508ff93df..e2261151b 100644 --- a/packages/katana_scoped/lib/value/cache.dart +++ b/packages/katana_scoped/lib/value/cache.dart @@ -9,16 +9,22 @@ extension RefCacheExtensions on Ref { /// /// If [keys] is passed a value different from the previous value, [callback] is executed again and the value is updated. /// + /// If [name] is specified, it is saved as a separate type. If [keys] is changed, the previous state is discarded, but if [name] is changed, it is kept as a separate state. + /// /// [callback]で返される値をキャッシュして保存します。 /// /// [keys]が前の値と違う値が渡された場合、再度[callback]が実行され値が更新されます。 + /// + /// [name]を指定すると別のタイプとして保存されます。[keys]を変えた場合は以前の状態は破棄されますが、[name]を変えた場合は別々の状態として保持されます。 T cache( T Function() callback, { List keys = const [], + String? name, }) { return getScopedValue>( () => _CacheValue(callback: callback, keys: keys), listen: false, + name: name, ); } } diff --git a/packages/katana_scoped/lib/value/watch.dart b/packages/katana_scoped/lib/value/watch.dart index 89b69b724..46849ce5d 100644 --- a/packages/katana_scoped/lib/value/watch.dart +++ b/packages/katana_scoped/lib/value/watch.dart @@ -11,18 +11,24 @@ extension RefWatchExtensions on Ref { /// /// If [keys] is different from the previous value, [callback] is executed again and the new [ChangeNotifier] is saved. /// + /// If [name] is specified, it is saved as a separate type. If [keys] is changed, the previous state is discarded, but if [name] is changed, it is kept as a separate state. + /// /// [ChangeNotifier]を返す[callback]を渡すとそれを監視することができます。 /// /// [ChangeNotifier.notifyListeners]が実行されると更新が通知され、関連するウィジェットが再描画されます。 /// /// [keys]が前の値と違う場合再度[callback]が実行され、新しい[ChangeNotifier]が保存されます。 + /// + /// [name]を指定すると別のタイプとして保存されます。[keys]を変えた場合は以前の状態は破棄されますが、[name]を変えた場合は別々の状態として保持されます。 T watch( T Function() callback, { List keys = const [], + String? name, }) { return getScopedValue>( () => _WatchValue(callback: callback, keys: keys), listen: true, + name: name, ); } }