B0r*_*0r1 2 serialization dart graphql flutter
我创建了一个 data_provider 包和一个存储库包。如果我在 data_provider 中运行 main.dart,一切正常,并且我得到了获取的数据。但是如果我想从存储库层获取数据,我会收到此错误:
\nlib/example/main.dart: Warning: Interpreting this as package URI, \'package:profile_repository/example/main.dart\'.\nlib/example/main.dart:1\nError: Couldn\'t resolve the package \'gql_code_builder\' in \'package:gql_code_builder/src/serializers/operation_serializer.dart\'.\nError: Couldn\'t resolve the package \'gql_code_builder\' in \'package:gql_code_builder/src/serializers/default_scalar_serializer.dart\'.\n: Error: Not found: \'package:gql_code_builder/src/serializers/operation_serializer.dart\'\n../\xe2\x80\xa6/lib/serializers.gql.dart:135\nimport \'package:gql_code_builder/src/serializers/operation_serializer.dart\'\n ^\n: Error: Not found: \'package:gql_code_builder/src/serializers/default_scalar_serializer.dart\'\n../\xe2\x80\xa6/lib/schema.schema.gql.dart:7\nimport \'package:gql_code_builder/src/serializers/default_scalar_serializer.dart\'\n ^\n: Error: Method not found: \'OperationSerializer\'.\n../\xe2\x80\xa6/lib/serializers.gql.dart:141\n ..add(OperationSerializer())\n ^^^^^^^^^^^^^^^^^^^\n: Error: Method not found: \'DefaultScalarSerializer\'.\n../\xe2\x80\xa6/lib/schema.schema.gql.dart:1380\n static Serializer<GJSON> get serializer => _i2.DefaultScalarSerializer<GJSON>(\nRun Code Online (Sandbox Code Playgroud)\nmain.dart(存储库层)
\n// ignore_for_file: avoid_print, avoid_void_async, unnecessary_lambdas,\n\nimport \'package:data_provider/data_provider.dart\';\nimport \'package:ferry/ferry.dart\';\nimport \'package:get_it/get_it.dart\';\nimport \'package:profile_repository/profile_repository.dart\';\n\nvoid main() async {\n final client = await initClient();\n GetIt.I.registerLazySingleton<Client>(() => client);\n\n try {\n final profiles = await ProfileRepository().getProfiles();\n print(\'Profiles: $profiles\');\n } on Exception catch (e) {\n print(e);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n配置文件存储库:
\nimport \'package:data_provider/data_provider.dart\';\n\n/// Thrown when an error occurs while looking up for profiles.\nclass ProfilesException implements Exception {}\n\n/// {@template profile_repository}\n/// Profiles from different categories fetched\n/// {@endtemplate}\nclass ProfileRepository {\n /// {@macro profile_repository}\n ProfileRepository({ProfileService? profileService})\n : _profileService = profileService ?? ProfileService();\n\n final ProfileService _profileService;\n\n /// Returns a list of all club and players profiles.\n ///\n /// Throws a [ProfilesException] if an error occurs.\n Future<List<GGetProfilesData_profiles>?> getProfiles() async {\n try {\n final profiles = await _profileService.getProfiles();\n return profiles;\n } on Exception {\n throw ProfilesException();\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n配置文件_服务(数据层):
\n// ignore_for_file: avoid_print\n\nimport \'package:built_collection/built_collection.dart\';\nimport \'package:data_provider/data_provider.dart\';\nimport \'package:ferry/ferry.dart\';\nimport \'package:get_it/get_it.dart\';\n\nclass ProfileService {\n final client = GetIt.I<Client>();\n\n Future<List<GGetProfilesData_profiles>?> getProfiles() async {\n try {\n final profilesReq = GGetProfilesReq();\n BuiltList<GGetProfilesData_profiles>? result;\n\n final value = await client.request(profilesReq).first;\n\n RequestHelper.checkError(value);\n\n if (value.data != null && value.data!.profiles != null) {\n result = value.data!.profiles;\n }\n\n return result?.toList();\n } on DataProviderGraphqlErrorException catch (e) {\n print(e.toString());\n } on DataProviderLinkException catch (e) {\n print(e.toString());\n }\n return List.empty();\n }\n}\nRun Code Online (Sandbox Code Playgroud)\nmain.dart(data_provider,什么有效!)
\n// ignore_for_file: avoid_print, avoid_void_async, unnecessary_lambdas,\n\nimport \'package:data_provider/data_provider.dart\';\nimport \'package:ferry/ferry.dart\';\nimport \'package:get_it/get_it.dart\';\n\nvoid main() async {\n final client = await initClient();\n GetIt.I.registerLazySingleton<Client>(() => client);\n\n try {\n final profiles = await ProfileService().getProfiles();\n print(\'Profiles: $profiles\');\n } on Exception catch (e) {\n print(e);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n
我找到了解决方案。虽然不是完美的,但它确实有效。
@knaecke 引导我找到答案。您可以在主库(而不是真正使用它的包)上的 pubspec.yaml 的“依赖项:”部分中显式添加 gql_code_builder 。
它很丑陋而且很奇怪,但是好吧,它有效......
| 归档时间: |
|
| 查看次数: |
745 次 |
| 最近记录: |