From be36304b0e70873af917058e590617137240a801 Mon Sep 17 00:00:00 2001 From: mathru Date: Sun, 25 Jun 2023 00:13:37 +0900 Subject: [PATCH] fix: Adapter tied to the main controller. query installation. --- packages/masamune_agora/example/pubspec.lock | 42 +- .../lib/src/agora_controller.dart | 51 ++ packages/masamune_agora/pubspec.lock | 435 +++++++++++++----- .../lib/adapter/openai_masamune_adapter.dart | 22 + .../lib/src/openai_chat.dart | 73 ++- .../lib/src/openai_media.dart | 53 ++- packages/masamune_ai_openai/pubspec.lock | 40 +- .../adapter/calendar_masamune_adapter.dart | 22 + .../lib/src/calendar_controller.dart | 53 ++- packages/masamune_calendar/pubspec.lock | 40 +- .../masamune_location/lib/src/location.dart | 45 +- .../lib/src/others/compass.dart | 44 +- .../lib/src/others/others.dart | 2 + .../lib/src/web/compass.dart | 44 +- .../masamune_location/lib/src/web/web.dart | 2 + packages/masamune_location/pubspec.lock | 4 +- .../example/pubspec.lock | 84 ++-- .../google_location_masamune_adapter.dart | 22 + .../lib/src/map_controller.dart | 16 +- .../masamune_location_google/pubspec.lock | 8 +- .../masamune_location_google/pubspec.yaml | 2 - 21 files changed, 882 insertions(+), 222 deletions(-) diff --git a/packages/masamune_agora/example/pubspec.lock b/packages/masamune_agora/example/pubspec.lock index 477055865..8158e4cd9 100644 --- a/packages/masamune_agora/example/pubspec.lock +++ b/packages/masamune_agora/example/pubspec.lock @@ -397,91 +397,91 @@ packages: path: "../../katana_auth" relative: true source: path - version: "2.0.4" + version: "2.0.6" katana_form: dependency: "direct overridden" description: path: "../../katana_form" relative: true source: path - version: "2.4.0" + version: "2.4.1" katana_functions: dependency: "direct overridden" description: path: "../../katana_functions" relative: true source: path - version: "2.2.3" + version: "2.3.0" katana_indicator: dependency: "direct overridden" description: path: "../../katana_indicator" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_listenables: dependency: "direct overridden" description: path: "../../katana_listenables" relative: true source: path - version: "2.0.6" + version: "2.0.7" katana_listenables_annotation: dependency: "direct overridden" description: path: "../../katana_listenables_annotation" relative: true source: path - version: "2.0.5" + version: "2.0.6" katana_localization: dependency: "direct overridden" description: path: "../../katana_localization" relative: true source: path - version: "2.0.7" + version: "2.0.8" katana_localization_annotation: dependency: "direct overridden" description: path: "../../katana_localization_annotation" relative: true source: path - version: "2.0.6" + version: "2.0.7" katana_logger: dependency: "direct overridden" description: path: "../../katana_logger" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_model: dependency: "direct overridden" description: path: "../../katana_model" relative: true source: path - version: "2.3.2" + version: "2.3.3" katana_prefs: dependency: "direct overridden" description: path: "../../katana_prefs" relative: true source: path - version: "2.0.5" + version: "2.0.6" katana_prefs_annotation: dependency: "direct overridden" description: path: "../../katana_prefs_annotation" relative: true source: path - version: "2.0.5" + version: "2.0.6" katana_router: dependency: "direct overridden" description: path: "../../katana_router" relative: true source: path - version: "2.0.7" + version: "2.0.8" katana_router_annotation: dependency: "direct overridden" description: @@ -495,42 +495,42 @@ packages: path: "../../katana_scoped" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_shorten: dependency: "direct overridden" description: path: "../../katana_shorten" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_storage: dependency: "direct overridden" description: path: "../../katana_storage" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_theme: dependency: "direct overridden" description: path: "../../katana_theme" relative: true source: path - version: "2.0.8" + version: "2.0.9" katana_theme_annotation: dependency: "direct overridden" description: path: "../../katana_theme_annotation" relative: true source: path - version: "2.0.5" + version: "2.0.6" katana_ui: dependency: "direct overridden" description: path: "../../katana_ui" relative: true source: path - version: "2.1.0" + version: "2.1.1" lints: dependency: transitive description: @@ -553,14 +553,14 @@ packages: path: "../../masamune" relative: true source: path - version: "2.1.16" + version: "2.1.19" masamune_agora: dependency: "direct main" description: path: ".." relative: true source: path - version: "2.0.41" + version: "2.0.44" masamune_annotation: dependency: "direct overridden" description: diff --git a/packages/masamune_agora/lib/src/agora_controller.dart b/packages/masamune_agora/lib/src/agora_controller.dart index ec924732e..146c1024b 100644 --- a/packages/masamune_agora/lib/src/agora_controller.dart +++ b/packages/masamune_agora/lib/src/agora_controller.dart @@ -30,6 +30,15 @@ class AgoraController }) : _loggerAdapters = loggerAdapters, super(defaultValue: []); + /// Query for AgoraController. + /// + /// ```dart + /// appRef.conroller(AgoraController.query(parameters)); // Get from application scope. + /// ref.app.conroller(AgoraController.query(parameters)); // Watch at application scope. + /// ref.page.conroller(AgoraController.query(parameters)); // Watch at page scope. + /// ``` + static const query = _$AgoraControllerQuery(); + static const String _agoraURL = "https://api.agora.io/v1/apps"; static RtcEngine? _engine; @@ -1156,3 +1165,45 @@ class AgoraController } } } + +@immutable +class _$AgoraControllerQuery { + const _$AgoraControllerQuery(); + + @useResult + _$_AgoraControllerQuery call( + String channelName, { + List loggerAdapters = const [], + }) => + _$_AgoraControllerQuery( + hashCode.toString(), + channelName: channelName, + loggerAdapters: loggerAdapters, + ); +} + +@immutable +class _$_AgoraControllerQuery extends ControllerQueryBase { + const _$_AgoraControllerQuery( + this._name, { + required this.channelName, + this.loggerAdapters = const [], + }); + + final String _name; + final String channelName; + final List loggerAdapters; + + @override + AgoraController Function() call(Ref ref) { + return () => AgoraController( + channelName, + loggerAdapters: loggerAdapters, + ); + } + + @override + String get name => _name; + @override + bool get autoDisposeWhenUnreferenced => true; +} diff --git a/packages/masamune_agora/pubspec.lock b/packages/masamune_agora/pubspec.lock index c35869de5..8c062fa6f 100644 --- a/packages/masamune_agora/pubspec.lock +++ b/packages/masamune_agora/pubspec.lock @@ -57,6 +57,70 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.1" + build: + dependency: transitive + description: + name: build + sha256: "43865b79fbb78532e4bff7c33087aa43b1d488c4fdef014eaef568af6d8016dc" + url: "https://pub.dev" + source: hosted + version: "2.4.0" + build_config: + dependency: transitive + description: + name: build_config + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 + url: "https://pub.dev" + source: hosted + version: "1.1.1" + build_daemon: + dependency: transitive + description: + name: build_daemon + sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + sha256: db49b8609ef8c81cca2b310618c3017c00f03a92af44c04d310b907b2d692d95 + url: "https://pub.dev" + source: hosted + version: "2.2.0" + build_runner: + dependency: "direct dev" + description: + name: build_runner + sha256: "5e1929ad37d48bd382b124266cb8e521de5548d406a45a5ae6656c13dab73e37" + url: "https://pub.dev" + source: hosted + version: "2.4.5" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + sha256: "6d6ee4276b1c5f34f21fdf39425202712d2be82019983d52f351c94aafbc2c41" + url: "https://pub.dev" + source: hosted + version: "7.2.10" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: "598a2a682e2a7a90f08ba39c0aaa9374c5112340f0a2e275f61b59389543d166" + url: "https://pub.dev" + source: hosted + version: "8.6.1" characters: dependency: transitive description: @@ -65,6 +129,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" + source: hosted + version: "2.0.3" clock: dependency: transitive description: @@ -73,6 +145,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: "4ad01d6e56db961d29661561effde45e519939fdaeb46c351275b182eac70189" + url: "https://pub.dev" + source: hosted + version: "4.5.0" collection: dependency: transitive description: @@ -105,6 +185,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" + csv: + dependency: transitive + description: + name: csv + sha256: "016b31a51a913744a0a1655c74ff13c9379e1200e246a03d96c81c5d9ed297b5" + url: "https://pub.dev" + source: hosted + version: "5.0.2" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: f4f1f73ab3fd2afcbcca165ee601fe980d966af6a21b5970c6c9376955c528ad + url: "https://pub.dev" + source: hosted + version: "2.3.1" encrypt: dependency: transitive description: @@ -171,6 +267,14 @@ packages: description: flutter source: sdk version: "0.0.0" + freezed_annotation: + dependency: transitive + description: + name: freezed_annotation + sha256: aeac15850ef1b38ee368d4c53ba9a847e900bb2c53a4db3f6881cbb3cb684338 + url: "https://pub.dev" + source: hosted + version: "2.2.0" frontend_server_client: dependency: transitive description: @@ -187,6 +291,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" + graphs: + dependency: transitive + description: + name: graphs + sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + url: "https://pub.dev" + source: hosted + version: "2.3.1" http: dependency: transitive description: @@ -254,150 +366,211 @@ packages: katana: dependency: "direct main" description: - path: "../katana" - relative: true - source: path + name: katana + sha256: d8d543f8ac86adb6c150182d681e781b302388e68b019f6e828b6c344ba44e81 + url: "https://pub.dev" + source: hosted version: "2.2.0" katana_auth: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_auth" - relative: true - source: path - version: "2.0.4" + name: katana_auth + sha256: ca6a8820cbbd4e08de77b1bae8c9d2cbfd873cef8d632b77146669e561b705f1 + url: "https://pub.dev" + source: hosted + version: "2.0.6" katana_form: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_form" - relative: true - source: path - version: "2.4.0" + name: katana_form + sha256: c960c98e459a9c95bccb5b133caa51ce2364d2e13a50ab0a88c83b714d410a90 + url: "https://pub.dev" + source: hosted + version: "2.4.1" katana_functions: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_functions" - relative: true - source: path - version: "2.2.3" + name: katana_functions + sha256: e94fec7360ee80926385b4bb6581051ab97ad52a8d6106e276440461d8000649 + url: "https://pub.dev" + source: hosted + version: "2.3.0" katana_indicator: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_indicator" - relative: true - source: path - version: "2.0.4" + name: katana_indicator + sha256: "33674917acf0cd9b847f37f5131b4c84de38ae942521c3c9014d9a7bf604bbae" + url: "https://pub.dev" + source: hosted + version: "2.0.5" katana_listenables: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_listenables" - relative: true - source: path - version: "2.0.6" + name: katana_listenables + sha256: caa3022a6ad293aca88dd87559c19218607729e73975777047042e623772c0a4 + url: "https://pub.dev" + source: hosted + version: "2.0.7" katana_listenables_annotation: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_listenables_annotation" - relative: true - source: path - version: "2.0.5" - katana_localization: - dependency: "direct overridden" + name: katana_listenables_annotation + sha256: "579b7ef59314b1c3fcc1a91a14b47499b8e3300dd19b4bc70a1e6157144b3331" + url: "https://pub.dev" + source: hosted + version: "2.0.6" + katana_listenables_builder: + dependency: transitive description: - path: "../katana_localization" - relative: true - source: path + name: katana_listenables_builder + sha256: f77012604c74901974cd4ece389117da7de01a5c8232d717c6d78ddca5d52bf6 + url: "https://pub.dev" + source: hosted version: "2.0.7" + katana_localization: + dependency: transitive + description: + name: katana_localization + sha256: "02f105e3509a5951911ee2c28fc6da9c167f2705bd2437a2aae50310495eedc4" + url: "https://pub.dev" + source: hosted + version: "2.0.8" katana_localization_annotation: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_localization_annotation" - relative: true - source: path - version: "2.0.6" + name: katana_localization_annotation + sha256: "4abfddc4581adf4167cb58d753a217fcb86c75ce7f033db612cd8c124296ad36" + url: "https://pub.dev" + source: hosted + version: "2.0.7" + katana_localization_builder: + dependency: transitive + description: + name: katana_localization_builder + sha256: d87c054cda51b941433a59c1393b4396a72d4dd6297f64bf14449f6510fb00e3 + url: "https://pub.dev" + source: hosted + version: "2.0.8" katana_logger: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_logger" - relative: true - source: path - version: "2.0.4" + name: katana_logger + sha256: da01f4dffacce67f171436e6da972549da08bd0aec59c97f44b97295e3d4dc11 + url: "https://pub.dev" + source: hosted + version: "2.0.5" katana_model: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_model" - relative: true - source: path - version: "2.3.2" + name: katana_model + sha256: "85c570970863daf7ee5ef4073fd53953004216267bf7fa02b3fcc37d65919dee" + url: "https://pub.dev" + source: hosted + version: "2.3.3" katana_prefs: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_prefs" - relative: true - source: path - version: "2.0.5" + name: katana_prefs + sha256: b8fdaa8682a2412d785aa1fd47737f485c7cc5c07808164dd050299fed9ae5a1 + url: "https://pub.dev" + source: hosted + version: "2.0.6" katana_prefs_annotation: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_prefs_annotation" - relative: true - source: path - version: "2.0.5" + name: katana_prefs_annotation + sha256: "789c5a567e60cd21949b1882c0d77cb47a90c33a9c8a56880f701170021c9276" + url: "https://pub.dev" + source: hosted + version: "2.0.6" + katana_prefs_builder: + dependency: transitive + description: + name: katana_prefs_builder + sha256: f7de0bd5908faa44cb6323573aaa1bb42bffdd0863e861f525f04e7eeadde889 + url: "https://pub.dev" + source: hosted + version: "2.0.6" katana_router: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_router" - relative: true - source: path - version: "2.0.7" + name: katana_router + sha256: d02efbf5e4bbfa95676921f022dd47a339d761597a782b95f14e89125d50101d + url: "https://pub.dev" + source: hosted + version: "2.0.8" katana_router_annotation: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_router_annotation" - relative: true - source: path + name: katana_router_annotation + sha256: "14461a6d62d7ccdeb950e3fade8b72f783a7f97a940bd2430aceb7f59047517c" + url: "https://pub.dev" + source: hosted version: "2.0.7" + katana_router_builder: + dependency: transitive + description: + name: katana_router_builder + sha256: "084a0b536244528bbce3a89738741d921dcb86c790dfb2299508131957e0d490" + url: "https://pub.dev" + source: hosted + version: "2.0.8" katana_scoped: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_scoped" - relative: true - source: path - version: "2.0.4" + name: katana_scoped + sha256: "0606e67ee3f34e7fb1cf24cea03459b775723c73c0694339e7d47eedeefc7456" + url: "https://pub.dev" + source: hosted + version: "2.0.5" katana_shorten: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_shorten" - relative: true - source: path - version: "2.0.4" + name: katana_shorten + sha256: "96286cac0dfd5173898259e52c35e2d22d44eb8c96d2e69d6b0bc0e09bd68b2b" + url: "https://pub.dev" + source: hosted + version: "2.0.5" katana_storage: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_storage" - relative: true - source: path - version: "2.0.4" + name: katana_storage + sha256: "60ebe210ff00ade5d86b5ca57930103828731466968ef6993012683739576694" + url: "https://pub.dev" + source: hosted + version: "2.0.5" katana_theme: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_theme" - relative: true - source: path - version: "2.0.8" + name: katana_theme + sha256: "6bbd5903afb5cfee870dd70fea05f33ae763c219109634a5e1c461b94293f45f" + url: "https://pub.dev" + source: hosted + version: "2.0.9" katana_theme_annotation: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_theme_annotation" - relative: true - source: path - version: "2.0.5" + name: katana_theme_annotation + sha256: "947fc867650a71da6745e5c6238296ed18a6c68fc5c076f57309cef4b0b10056" + url: "https://pub.dev" + source: hosted + version: "2.0.6" + katana_theme_builder: + dependency: transitive + description: + name: katana_theme_builder + sha256: "3ab1ef36aaf7d1f7dde2305e137466cd75eab9949b723e63ad6b2e333c89b16d" + url: "https://pub.dev" + source: hosted + version: "2.0.7" katana_ui: - dependency: "direct overridden" + dependency: transitive description: - path: "../katana_ui" - relative: true - source: path - version: "2.1.0" + name: katana_ui + sha256: "34fc9218ee42c689aeddc95f2cd86eb2df8bfa41e9af3f2be9e8218f1ba36021" + url: "https://pub.dev" + source: hosted + version: "2.1.1" lints: dependency: transitive description: @@ -417,17 +590,27 @@ packages: masamune: dependency: "direct main" description: - path: "../masamune" - relative: true - source: path - version: "2.1.16" + name: masamune + sha256: bb90531269b9afbbfdba2eae27fecc8b596e84832f5f415fee5620fe6f16d53c + url: "https://pub.dev" + source: hosted + version: "2.1.19" masamune_annotation: - dependency: "direct overridden" + dependency: transitive description: - path: "../masamune_annotation" - relative: true - source: path + name: masamune_annotation + sha256: fd389eab327289bffe7e9079524c3a6d5a420e2f751138315d3e3f4825109a6d + url: "https://pub.dev" + source: hosted version: "2.1.1" + masamune_builder: + dependency: "direct dev" + description: + name: masamune_builder + sha256: "8c7ecfaf4ada4140b3d20f7ddb0687d0cc5ed90563c4687b0bca2674176fd9a8" + url: "https://pub.dev" + source: hosted + version: "2.2.2" matcher: dependency: transitive description: @@ -628,6 +811,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 + url: "https://pub.dev" + source: hosted + version: "1.2.3" recase: dependency: transitive description: @@ -729,6 +920,14 @@ packages: description: flutter source: sdk version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + sha256: "373f96cf5a8744bc9816c1ff41cf5391bbdbe3d7a96fe98c622b6738a8a7bd33" + url: "https://pub.dev" + source: hosted + version: "1.3.2" source_map_stack_trace: dependency: transitive description: @@ -777,6 +976,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.1" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + url: "https://pub.dev" + source: hosted + version: "2.1.0" string_scanner: dependency: transitive description: @@ -817,6 +1024,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.3" + timing: + dependency: transitive + description: + name: timing + sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" + url: "https://pub.dev" + source: hosted + version: "1.0.1" tint: dependency: transitive description: diff --git a/packages/masamune_ai_openai/lib/adapter/openai_masamune_adapter.dart b/packages/masamune_ai_openai/lib/adapter/openai_masamune_adapter.dart index a80473478..48abb7230 100644 --- a/packages/masamune_ai_openai/lib/adapter/openai_masamune_adapter.dart +++ b/packages/masamune_ai_openai/lib/adapter/openai_masamune_adapter.dart @@ -29,6 +29,28 @@ class OpenAIMasamuneAdapter extends MasamuneAdapter { OpenAI.apiKey = apiKey; } + /// You can retrieve the [OpenAIMasamuneAdapter] first given by [MasamuneAdapterScope]. + /// + /// 最初に[MasamuneAdapterScope]で与えた[OpenAIMasamuneAdapter]を取得することができます。 + static OpenAIMasamuneAdapter get primary { + assert( + _primary != null, + "OpenAIMasamuneAdapter is not set. Place [MasamuneAdapterScope] widget closer to the root.", + ); + return _primary!; + } + + static OpenAIMasamuneAdapter? _primary; + + @override + void onInitScope(MasamuneAdapter adapter) { + super.onInitScope(adapter); + if (adapter is! OpenAIMasamuneAdapter) { + return; + } + _primary = adapter; + } + @override Widget onBuildApp(BuildContext context, Widget app) { return MasamuneAdapterScope( diff --git a/packages/masamune_ai_openai/lib/src/openai_chat.dart b/packages/masamune_ai_openai/lib/src/openai_chat.dart index ef395f562..08164285b 100644 --- a/packages/masamune_ai_openai/lib/src/openai_chat.dart +++ b/packages/masamune_ai_openai/lib/src/openai_chat.dart @@ -23,8 +23,8 @@ part of masamune_ai_openai; /// これまでのすべての会話は[value]で取得できます。 /// /// [clear]ですべての会話を削除し最初から始めることができます。 -class OpenAIChat extends ChangeNotifier - implements ValueListenable> { +class OpenAIChat + extends MasamuneControllerBase, OpenAIMasamuneAdapter> { /// Class for exchanging ChatGPT. /// /// You can set an initial value in [initialValue] and proceed with the conversation while retaining all previous conversations. @@ -58,6 +58,18 @@ class OpenAIChat extends ChangeNotifier _value = initialValue ?? []; } + /// Query for OpenAIChat. + /// + /// ```dart + /// appRef.conroller(OpenAIChat.query(parameters)); // Get from application scope. + /// ref.app.conroller(OpenAIChat.query(parameters)); // Watch at application scope. + /// ref.page.conroller(OpenAIChat.query(parameters)); // Watch at page scope. + /// ``` + static const query = _$OpenAIChatQuery(); + + @override + OpenAIMasamuneAdapter get primaryAdapter => OpenAIMasamuneAdapter.primary; + /// User Name. /// /// ユーザーの名前。 @@ -383,3 +395,60 @@ enum OpenAIChatRole { } } } + +@immutable +class _$OpenAIChatQuery { + const _$OpenAIChatQuery(); + + @useResult + _$_OpenAIChatQuery call({ + String user = "user", + OpenAIChatModel model = OpenAIChatModel.gpt35Turbo, + List? initialValue, + int? maxTokens = 300, + double? temperature, + }) => + _$_OpenAIChatQuery( + hashCode.toString(), + user: user, + model: model, + initialValue: initialValue, + maxTokens: maxTokens, + temperature: temperature, + ); +} + +@immutable +class _$_OpenAIChatQuery extends ControllerQueryBase { + const _$_OpenAIChatQuery( + this._name, { + this.user = "user", + this.model = OpenAIChatModel.gpt35Turbo, + this.initialValue, + this.maxTokens = 300, + this.temperature, + }); + + final String _name; + final String user; + final OpenAIChatModel model; + final int? maxTokens; + final double? temperature; + final List? initialValue; + + @override + OpenAIChat Function() call(Ref ref) { + return () => OpenAIChat( + user: user, + model: model, + initialValue: initialValue, + maxTokens: maxTokens, + temperature: temperature, + ); + } + + @override + String get name => _name; + @override + bool get autoDisposeWhenUnreferenced => true; +} diff --git a/packages/masamune_ai_openai/lib/src/openai_media.dart b/packages/masamune_ai_openai/lib/src/openai_media.dart index 3d0365d32..c811968d0 100644 --- a/packages/masamune_ai_openai/lib/src/openai_media.dart +++ b/packages/masamune_ai_openai/lib/src/openai_media.dart @@ -11,8 +11,8 @@ part of masamune_ai_openai; /// [create]にプロンプトを渡すことで、画像を生成できます。 /// /// [value]でそれまで生成された画像のリストを取得できます。 -class OpenAIMedia extends ChangeNotifier - implements ValueListenable> { +class OpenAIMedia extends MasamuneControllerBase, + OpenAIMasamuneAdapter> { /// Provides image generation capabilities using OpenAI's Dall-E. /// /// Images can be generated by passing a prompt to [create]. @@ -28,6 +28,18 @@ class OpenAIMedia extends ChangeNotifier this.user = "user", }); + /// Query for OpenAIMedia. + /// + /// ```dart + /// appRef.conroller(OpenAIMedia.query(parameters)); // Get from application scope. + /// ref.app.conroller(OpenAIMedia.query(parameters)); // Watch at application scope. + /// ref.page.conroller(OpenAIMedia.query(parameters)); // Watch at page scope. + /// ``` + static const query = _$OpenAIMediaQuery(); + + @override + OpenAIMasamuneAdapter get primaryAdapter => OpenAIMasamuneAdapter.primary; + /// User Name. /// /// ユーザーの名前。 @@ -272,3 +284,40 @@ extension on OpenAIImageSize { } } } + +@immutable +class _$OpenAIMediaQuery { + const _$OpenAIMediaQuery(); + + @useResult + _$_OpenAIMediaQuery call({ + String user = "user", + }) => + _$_OpenAIMediaQuery( + hashCode.toString(), + user: user, + ); +} + +@immutable +class _$_OpenAIMediaQuery extends ControllerQueryBase { + const _$_OpenAIMediaQuery( + this._name, { + this.user = "user", + }); + + final String _name; + final String user; + + @override + OpenAIMedia Function() call(Ref ref) { + return () => OpenAIMedia( + user: user, + ); + } + + @override + String get name => _name; + @override + bool get autoDisposeWhenUnreferenced => true; +} diff --git a/packages/masamune_ai_openai/pubspec.lock b/packages/masamune_ai_openai/pubspec.lock index 95c11aba4..828c20a17 100644 --- a/packages/masamune_ai_openai/pubspec.lock +++ b/packages/masamune_ai_openai/pubspec.lock @@ -272,91 +272,91 @@ packages: path: "../katana_auth" relative: true source: path - version: "2.0.4" + version: "2.0.6" katana_form: dependency: "direct overridden" description: path: "../katana_form" relative: true source: path - version: "2.4.0" + version: "2.4.1" katana_functions: dependency: "direct overridden" description: path: "../katana_functions" relative: true source: path - version: "2.2.3" + version: "2.3.0" katana_indicator: dependency: "direct overridden" description: path: "../katana_indicator" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_listenables: dependency: "direct overridden" description: path: "../katana_listenables" relative: true source: path - version: "2.0.6" + version: "2.0.7" katana_listenables_annotation: dependency: "direct overridden" description: path: "../katana_listenables_annotation" relative: true source: path - version: "2.0.5" + version: "2.0.6" katana_localization: dependency: "direct overridden" description: path: "../katana_localization" relative: true source: path - version: "2.0.7" + version: "2.0.8" katana_localization_annotation: dependency: "direct overridden" description: path: "../katana_localization_annotation" relative: true source: path - version: "2.0.6" + version: "2.0.7" katana_logger: dependency: "direct overridden" description: path: "../katana_logger" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_model: dependency: "direct overridden" description: path: "../katana_model" relative: true source: path - version: "2.3.2" + version: "2.3.3" katana_prefs: dependency: "direct overridden" description: path: "../katana_prefs" relative: true source: path - version: "2.0.5" + version: "2.0.6" katana_prefs_annotation: dependency: "direct overridden" description: path: "../katana_prefs_annotation" relative: true source: path - version: "2.0.5" + version: "2.0.6" katana_router: dependency: "direct overridden" description: path: "../katana_router" relative: true source: path - version: "2.0.7" + version: "2.0.8" katana_router_annotation: dependency: "direct overridden" description: @@ -370,42 +370,42 @@ packages: path: "../katana_scoped" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_shorten: dependency: "direct overridden" description: path: "../katana_shorten" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_storage: dependency: "direct overridden" description: path: "../katana_storage" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_theme: dependency: "direct overridden" description: path: "../katana_theme" relative: true source: path - version: "2.0.8" + version: "2.0.9" katana_theme_annotation: dependency: "direct overridden" description: path: "../katana_theme_annotation" relative: true source: path - version: "2.0.5" + version: "2.0.6" katana_ui: dependency: "direct overridden" description: path: "../katana_ui" relative: true source: path - version: "2.1.0" + version: "2.1.1" lints: dependency: transitive description: @@ -428,7 +428,7 @@ packages: path: "../masamune" relative: true source: path - version: "2.1.16" + version: "2.1.19" masamune_annotation: dependency: "direct overridden" description: diff --git a/packages/masamune_calendar/lib/adapter/calendar_masamune_adapter.dart b/packages/masamune_calendar/lib/adapter/calendar_masamune_adapter.dart index ea2b447b0..fbf732ef6 100644 --- a/packages/masamune_calendar/lib/adapter/calendar_masamune_adapter.dart +++ b/packages/masamune_calendar/lib/adapter/calendar_masamune_adapter.dart @@ -38,6 +38,28 @@ class CalendarMasamuneAdapter extends MasamuneAdapter { /// 休日を指定します。 final List weekendDays; + /// You can retrieve the [CalendarMasamuneAdapter] first given by [MasamuneAdapterScope]. + /// + /// 最初に[MasamuneAdapterScope]で与えた[CalendarMasamuneAdapter]を取得することができます。 + static CalendarMasamuneAdapter get primary { + assert( + _primary != null, + "CalendarMasamuneAdapter is not set. Place [MasamuneAdapterScope] widget closer to the root.", + ); + return _primary!; + } + + static CalendarMasamuneAdapter? _primary; + + @override + void onInitScope(MasamuneAdapter adapter) { + super.onInitScope(adapter); + if (adapter is! CalendarMasamuneAdapter) { + return; + } + _primary = adapter; + } + @override Widget onBuildApp(BuildContext context, Widget app) { return MasamuneAdapterScope( diff --git a/packages/masamune_calendar/lib/src/calendar_controller.dart b/packages/masamune_calendar/lib/src/calendar_controller.dart index 898c32308..6b11f1826 100644 --- a/packages/masamune_calendar/lib/src/calendar_controller.dart +++ b/packages/masamune_calendar/lib/src/calendar_controller.dart @@ -3,7 +3,8 @@ part of masamune_calendar; /// Controller for operating the calendar /// /// カレンダーを操作するためのコントローラー -class CalendarController extends ChangeNotifier { +class CalendarController + extends MasamuneControllerBase { /// Controller for operating the calendar /// /// カレンダーを操作するためのコントローラー @@ -11,6 +12,18 @@ class CalendarController extends ChangeNotifier { this.initialDay, }); + /// Query for CalendarController. + /// + /// ```dart + /// appRef.conroller(CalendarController.query(parameters)); // Get from application scope. + /// ref.app.conroller(CalendarController.query(parameters)); // Watch at application scope. + /// ref.page.conroller(CalendarController.query(parameters)); // Watch at page scope. + /// ``` + static const query = _$CalendarControllerQuery(); + + @override + CalendarMasamuneAdapter get primaryAdapter => CalendarMasamuneAdapter.primary; + DateTime? _selectedDay; DateTime? _focusedDay; @@ -106,3 +119,41 @@ class CalendarController extends ChangeNotifier { @override bool operator ==(Object other) => other.hashCode == hashCode; } + +@immutable +class _$CalendarControllerQuery { + const _$CalendarControllerQuery(); + + @useResult + _$_CalendarControllerQuery call({ + DateTime? initialDay, + }) => + _$_CalendarControllerQuery( + hashCode.toString(), + initialDay: initialDay, + ); +} + +@immutable +class _$_CalendarControllerQuery + extends ControllerQueryBase { + const _$_CalendarControllerQuery( + this._name, { + this.initialDay, + }); + + final String _name; + final DateTime? initialDay; + + @override + CalendarController Function() call(Ref ref) { + return () => CalendarController( + initialDay: initialDay, + ); + } + + @override + String get name => _name; + @override + bool get autoDisposeWhenUnreferenced => true; +} diff --git a/packages/masamune_calendar/pubspec.lock b/packages/masamune_calendar/pubspec.lock index 5cef7c6d5..f0ca65951 100644 --- a/packages/masamune_calendar/pubspec.lock +++ b/packages/masamune_calendar/pubspec.lock @@ -248,91 +248,91 @@ packages: path: "../katana_auth" relative: true source: path - version: "2.0.4" + version: "2.0.6" katana_form: dependency: "direct overridden" description: path: "../katana_form" relative: true source: path - version: "2.4.0" + version: "2.4.1" katana_functions: dependency: "direct overridden" description: path: "../katana_functions" relative: true source: path - version: "2.2.3" + version: "2.3.0" katana_indicator: dependency: "direct overridden" description: path: "../katana_indicator" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_listenables: dependency: "direct overridden" description: path: "../katana_listenables" relative: true source: path - version: "2.0.6" + version: "2.0.7" katana_listenables_annotation: dependency: "direct overridden" description: path: "../katana_listenables_annotation" relative: true source: path - version: "2.0.5" + version: "2.0.6" katana_localization: dependency: "direct overridden" description: path: "../katana_localization" relative: true source: path - version: "2.0.7" + version: "2.0.8" katana_localization_annotation: dependency: "direct overridden" description: path: "../katana_localization_annotation" relative: true source: path - version: "2.0.6" + version: "2.0.7" katana_logger: dependency: "direct overridden" description: path: "../katana_logger" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_model: dependency: "direct overridden" description: path: "../katana_model" relative: true source: path - version: "2.3.2" + version: "2.3.3" katana_prefs: dependency: "direct overridden" description: path: "../katana_prefs" relative: true source: path - version: "2.0.5" + version: "2.0.6" katana_prefs_annotation: dependency: "direct overridden" description: path: "../katana_prefs_annotation" relative: true source: path - version: "2.0.5" + version: "2.0.6" katana_router: dependency: "direct overridden" description: path: "../katana_router" relative: true source: path - version: "2.0.7" + version: "2.0.8" katana_router_annotation: dependency: "direct overridden" description: @@ -346,42 +346,42 @@ packages: path: "../katana_scoped" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_shorten: dependency: "direct overridden" description: path: "../katana_shorten" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_storage: dependency: "direct overridden" description: path: "../katana_storage" relative: true source: path - version: "2.0.4" + version: "2.0.5" katana_theme: dependency: "direct overridden" description: path: "../katana_theme" relative: true source: path - version: "2.0.8" + version: "2.0.9" katana_theme_annotation: dependency: "direct overridden" description: path: "../katana_theme_annotation" relative: true source: path - version: "2.0.5" + version: "2.0.6" katana_ui: dependency: "direct overridden" description: path: "../katana_ui" relative: true source: path - version: "2.1.0" + version: "2.1.1" lints: dependency: transitive description: @@ -404,7 +404,7 @@ packages: path: "../masamune" relative: true source: path - version: "2.1.16" + version: "2.1.19" masamune_annotation: dependency: "direct overridden" description: diff --git a/packages/masamune_location/lib/src/location.dart b/packages/masamune_location/lib/src/location.dart index a42097a27..90797a982 100644 --- a/packages/masamune_location/lib/src/location.dart +++ b/packages/masamune_location/lib/src/location.dart @@ -19,8 +19,8 @@ part of masamune_location; /// [value]に[LocationData]が格納されるのでそこを参照してください。 /// /// [unlisten]で取得を終了します。 -class Location extends ChangeNotifier - implements ValueListenable { +class Location + extends MasamuneControllerBase { /// Class for handling terminal location information. /// /// The acquisition is initiated by doing [listen]. @@ -42,6 +42,18 @@ class Location extends ChangeNotifier /// [unlisten]で取得を終了します。 Location(); + /// Query for Location. + /// + /// ```dart + /// appRef.conroller(Location.query(parameters)); // Get from application scope. + /// ref.app.conroller(Location.query(parameters)); // Watch at application scope. + /// ref.page.conroller(Location.query(parameters)); // Watch at page scope. + /// ``` + static const query = _$LocationQuery(); + + @override + LocationMasamuneAdapter get primaryAdapter => LocationMasamuneAdapter.primary; + /// Returns `true` if initialized by executing [initialize]. /// /// [initialize]を実行して初期化されている場合は`true`を返します。 @@ -329,3 +341,32 @@ class LocationData { return "Latitude: $latitude, Longitude: $longitude"; } } + +@immutable +class _$LocationQuery { + const _$LocationQuery(); + + @useResult + _$_LocationQuery call() => _$_LocationQuery( + hashCode.toString(), + ); +} + +@immutable +class _$_LocationQuery extends ControllerQueryBase { + const _$_LocationQuery( + this._name, + ); + + final String _name; + + @override + Location Function() call(Ref ref) { + return () => Location(); + } + + @override + String get name => _name; + @override + bool get autoDisposeWhenUnreferenced => true; +} diff --git a/packages/masamune_location/lib/src/others/compass.dart b/packages/masamune_location/lib/src/others/compass.dart index 867b3227a..bede2e695 100644 --- a/packages/masamune_location/lib/src/others/compass.dart +++ b/packages/masamune_location/lib/src/others/compass.dart @@ -19,7 +19,8 @@ part of masamune_location.others; /// [value]に[CompassData]が格納されるのでそこを参照してください。 /// /// [unlisten]で取得を終了します。 -class Compass extends ChangeNotifier implements ValueListenable { +class Compass + extends MasamuneControllerBase { /// Class that handles the compass of the terminal. /// /// The acquisition is initiated by doing [listen]. @@ -41,6 +42,18 @@ class Compass extends ChangeNotifier implements ValueListenable { /// [unlisten]で取得を終了します。 Compass(); + /// Query for Compass. + /// + /// ```dart + /// appRef.conroller(Compass.query(parameters)); // Get from application scope. + /// ref.app.conroller(Compass.query(parameters)); // Watch at application scope. + /// ref.page.conroller(Compass.query(parameters)); // Watch at page scope. + /// ``` + static const query = _$CompassQuery(); + + @override + LocationMasamuneAdapter get primaryAdapter => LocationMasamuneAdapter.primary; + /// Returns `true` if initialized by executing [initialize]. /// /// [initialize]を実行して初期化されている場合は`true`を返します。 @@ -247,3 +260,32 @@ class CompassData { @override bool operator ==(Object other) => hashCode == other.hashCode; } + +@immutable +class _$CompassQuery { + const _$CompassQuery(); + + @useResult + _$_CompassQuery call() => _$_CompassQuery( + hashCode.toString(), + ); +} + +@immutable +class _$_CompassQuery extends ControllerQueryBase { + const _$_CompassQuery( + this._name, + ); + + final String _name; + + @override + Compass Function() call(Ref ref) { + return () => Compass(); + } + + @override + String get name => _name; + @override + bool get autoDisposeWhenUnreferenced => true; +} diff --git a/packages/masamune_location/lib/src/others/others.dart b/packages/masamune_location/lib/src/others/others.dart index daad4c569..d1ec0a895 100644 --- a/packages/masamune_location/lib/src/others/others.dart +++ b/packages/masamune_location/lib/src/others/others.dart @@ -10,5 +10,7 @@ import 'package:flutter/foundation.dart'; // Package imports: import 'package:flutter_compass/flutter_compass.dart'; import 'package:geolocator/geolocator.dart'; +import 'package:masamune/masamune.dart'; +import 'package:masamune_location/masamune_location.dart'; part 'compass.dart'; diff --git a/packages/masamune_location/lib/src/web/compass.dart b/packages/masamune_location/lib/src/web/compass.dart index 3d39cc528..68bf76697 100644 --- a/packages/masamune_location/lib/src/web/compass.dart +++ b/packages/masamune_location/lib/src/web/compass.dart @@ -19,7 +19,8 @@ part of masamune_location.web; /// [value]に[CompassData]が格納されるのでそこを参照してください。 /// /// [unlisten]で取得を終了します。 -class Compass extends ChangeNotifier implements ValueListenable { +class Compass + extends MasamuneControllerBase { /// Class that handles the compass of the terminal. /// /// The acquisition is initiated by doing [listen]. @@ -41,6 +42,18 @@ class Compass extends ChangeNotifier implements ValueListenable { /// [unlisten]で取得を終了します。 Compass(); + /// Query for Compass. + /// + /// ```dart + /// appRef.conroller(Compass.query(parameters)); // Get from application scope. + /// ref.app.conroller(Compass.query(parameters)); // Watch at application scope. + /// ref.page.conroller(Compass.query(parameters)); // Watch at page scope. + /// ``` + static const query = _$CompassQuery(); + + @override + LocationMasamuneAdapter get primaryAdapter => LocationMasamuneAdapter.primary; + /// Returns `true` if initialized by executing [initialize]. /// /// [initialize]を実行して初期化されている場合は`true`を返します。 @@ -217,3 +230,32 @@ class CompassData { @override bool operator ==(Object other) => hashCode == other.hashCode; } + +@immutable +class _$CompassQuery { + const _$CompassQuery(); + + @useResult + _$_CompassQuery call() => _$_CompassQuery( + hashCode.toString(), + ); +} + +@immutable +class _$_CompassQuery extends ControllerQueryBase { + const _$_CompassQuery( + this._name, + ); + + final String _name; + + @override + Compass Function() call(Ref ref) { + return () => Compass(); + } + + @override + String get name => _name; + @override + bool get autoDisposeWhenUnreferenced => true; +} diff --git a/packages/masamune_location/lib/src/web/web.dart b/packages/masamune_location/lib/src/web/web.dart index 73a0c4c7e..3b2863832 100644 --- a/packages/masamune_location/lib/src/web/web.dart +++ b/packages/masamune_location/lib/src/web/web.dart @@ -10,5 +10,7 @@ import 'package:flutter/foundation.dart'; // Package imports: import 'package:geolocator/geolocator.dart'; +import 'package:masamune/masamune.dart'; +import 'package:masamune_location/masamune_location.dart'; part 'compass.dart'; diff --git a/packages/masamune_location/pubspec.lock b/packages/masamune_location/pubspec.lock index 1e935ff37..e41bc6e60 100644 --- a/packages/masamune_location/pubspec.lock +++ b/packages/masamune_location/pubspec.lock @@ -382,7 +382,7 @@ packages: path: "../katana_functions" relative: true source: path - version: "2.2.4" + version: "2.3.0" katana_indicator: dependency: "direct overridden" description: @@ -559,7 +559,7 @@ packages: path: "../masamune" relative: true source: path - version: "2.1.18" + version: "2.1.19" masamune_annotation: dependency: "direct overridden" description: diff --git a/packages/masamune_location_google/example/pubspec.lock b/packages/masamune_location_google/example/pubspec.lock index 4fbc8caf5..40eb88e4c 100644 --- a/packages/masamune_location_google/example/pubspec.lock +++ b/packages/masamune_location_google/example/pubspec.lock @@ -320,6 +320,54 @@ packages: url: "https://pub.dev" source: hosted version: "3.2.0" + geolocator: + dependency: transitive + description: + name: geolocator + sha256: "5c23f3613f50586c0bbb2b8f970240ae66b3bd992088cf60dd5ee2e6f7dde3a8" + url: "https://pub.dev" + source: hosted + version: "9.0.2" + geolocator_android: + dependency: transitive + description: + name: geolocator_android + sha256: "94c2cf51f4a8387335cc2d1a21cc50897bc93069e05fc09aee29bd353a14f6f5" + url: "https://pub.dev" + source: hosted + version: "4.1.9" + geolocator_apple: + dependency: transitive + description: + name: geolocator_apple + sha256: "36527c555f4c425f7d8fa8c7c07d67b78e3ff7590d40448051959e1860c1cfb4" + url: "https://pub.dev" + source: hosted + version: "2.2.7" + geolocator_platform_interface: + dependency: transitive + description: + name: geolocator_platform_interface + sha256: af4d69231452f9620718588f41acc4cb58312368716bfff2e92e770b46ce6386 + url: "https://pub.dev" + source: hosted + version: "4.0.7" + geolocator_web: + dependency: transitive + description: + name: geolocator_web + sha256: f68a122da48fcfff68bbc9846bb0b74ef651afe84a1b1f6ec20939de4d6860e1 + url: "https://pub.dev" + source: hosted + version: "2.1.6" + geolocator_windows: + dependency: transitive + description: + name: geolocator_windows + sha256: f5911c88e23f48b598dd506c7c19eff0e001645bdc03bb6fecb9f4549208354d + url: "https://pub.dev" + source: hosted + version: "0.1.1" glob: dependency: transitive description: @@ -485,7 +533,7 @@ packages: path: "../../katana_auth" relative: true source: path - version: "2.0.5" + version: "2.0.6" katana_form: dependency: "direct overridden" description: @@ -499,7 +547,7 @@ packages: path: "../../katana_functions" relative: true source: path - version: "2.2.4" + version: "2.3.0" katana_indicator: dependency: "direct overridden" description: @@ -627,30 +675,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.1" - location: - dependency: transitive - description: - name: location - sha256: "9051959f6f2ccadd887b28b66e9cbbcc25b6838e37cf9e894c421ccc0ebf80b5" - url: "https://pub.dev" - source: hosted - version: "4.4.0" - location_platform_interface: - dependency: transitive - description: - name: location_platform_interface - sha256: "62eeaf1658e92e4459b727f55a3c328eccbac8ba043fa6d262ac5286ad48384c" - url: "https://pub.dev" - source: hosted - version: "2.3.0" - location_web: - dependency: transitive - description: - name: location_web - sha256: "6c08c408a040534c0269c4ff9fe17eebb5a36dea16512fbaf116b9c8bc21545b" - url: "https://pub.dev" - source: hosted - version: "3.1.1" logging: dependency: transitive description: @@ -665,7 +689,7 @@ packages: path: "../../masamune" relative: true source: path - version: "2.1.17" + version: "2.1.19" masamune_annotation: dependency: "direct overridden" description: @@ -677,17 +701,17 @@ packages: dependency: transitive description: name: masamune_location - sha256: "4c89b51f828447eee2826be6b1aa52ac1959cb53d7435e12a3e473604afdf41a" + sha256: eb5607e19ef75f0d8bd1dd3820623e26956e25a16b6c3bcb64d77a0d22eaee2a url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.7" masamune_location_google: dependency: "direct main" description: path: ".." relative: true source: path - version: "2.1.1" + version: "2.1.6" matcher: dependency: transitive description: diff --git a/packages/masamune_location_google/lib/adapter/google_location_masamune_adapter.dart b/packages/masamune_location_google/lib/adapter/google_location_masamune_adapter.dart index 8b71d9340..1bc750bb4 100644 --- a/packages/masamune_location_google/lib/adapter/google_location_masamune_adapter.dart +++ b/packages/masamune_location_google/lib/adapter/google_location_masamune_adapter.dart @@ -14,6 +14,28 @@ class GoogleLocationMasamuneAdapter extends LocationMasamuneAdapter { /// デフォルトのマップスタイル。 final MapStyle? defaultMapStyle; + /// You can retrieve the [GoogleLocationMasamuneAdapter] first given by [MasamuneAdapterScope]. + /// + /// 最初に[MasamuneAdapterScope]で与えた[GoogleLocationMasamuneAdapter]を取得することができます。 + static GoogleLocationMasamuneAdapter get primary { + assert( + _primary != null, + "GoogleLocationMasamuneAdapter is not set. Place [MasamuneAdapterScope] widget closer to the root.", + ); + return _primary!; + } + + static GoogleLocationMasamuneAdapter? _primary; + + @override + void onInitScope(MasamuneAdapter adapter) { + super.onInitScope(adapter); + if (adapter is! GoogleLocationMasamuneAdapter) { + return; + } + _primary = adapter; + } + @override Widget onBuildApp(BuildContext context, Widget app) { return MasamuneAdapterScope( diff --git a/packages/masamune_location_google/lib/src/map_controller.dart b/packages/masamune_location_google/lib/src/map_controller.dart index 12333f7a2..6d1a41ac1 100644 --- a/packages/masamune_location_google/lib/src/map_controller.dart +++ b/packages/masamune_location_google/lib/src/map_controller.dart @@ -31,8 +31,8 @@ part of masamune_location_google; /// [zoomIn]、[zoomOut]、[zoomTo]でズームを変更できます。 /// /// [setMarker]、[setCircle]、[setPolygon]、[setPolyline]でマーカーやポリゴン、ポリライン、サークルを設定できます。 -@controller -class MapController extends ChangeNotifier { +class MapController + extends MasamuneControllerBase { /// Map controller to handle GoogleMap. /// /// [MapController.query] allows you to retrieve objects from `ref.controller` and others while preserving their state. @@ -69,11 +69,19 @@ class MapController extends ChangeNotifier { compass.addListener(notifyListeners); } - /// Objects can be retrieved while retaining their state by passing them to `ref.controller`. + /// Query for MapController. /// - /// `ref.controller`に渡すことで状態を保持しながらオブジェクトの取得ができます。 + /// ```dart + /// appRef.conroller(MapController.query(parameters)); // Get from application scope. + /// ref.app.conroller(MapController.query(parameters)); // Watch at application scope. + /// ref.page.conroller(MapController.query(parameters)); // Watch at page scope. + /// ``` static const query = _$MapControllerQuery(); + @override + GoogleLocationMasamuneAdapter get primaryAdapter => + GoogleLocationMasamuneAdapter.primary; + Completer? _completer; /// Manage location information. diff --git a/packages/masamune_location_google/pubspec.lock b/packages/masamune_location_google/pubspec.lock index 065c39607..6a07f6867 100644 --- a/packages/masamune_location_google/pubspec.lock +++ b/packages/masamune_location_google/pubspec.lock @@ -526,7 +526,7 @@ packages: path: "../katana_functions" relative: true source: path - version: "2.2.4" + version: "2.3.0" katana_indicator: dependency: "direct overridden" description: @@ -703,7 +703,7 @@ packages: path: "../masamune" relative: true source: path - version: "2.1.18" + version: "2.1.19" masamune_annotation: dependency: "direct overridden" description: @@ -722,10 +722,10 @@ packages: dependency: "direct main" description: name: masamune_location - sha256: ec03a784421a20372674c2f62fb190098f97fec371ecf1371ced1aabc97e3686 + sha256: eb5607e19ef75f0d8bd1dd3820623e26956e25a16b6c3bcb64d77a0d22eaee2a url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.1.7" matcher: dependency: transitive description: diff --git a/packages/masamune_location_google/pubspec.yaml b/packages/masamune_location_google/pubspec.yaml index d12ba61b9..3d94275ad 100644 --- a/packages/masamune_location_google/pubspec.yaml +++ b/packages/masamune_location_google/pubspec.yaml @@ -22,6 +22,4 @@ dev_dependencies: test: ^1.21.3 flutter_lints: ^2.0.0 import_sorter: ^4.6.0 - build_runner: ^2.3.3 - masamune_builder: ^2.2.2