【发布时间】:2022-03-25 22:29:40
【问题描述】:
我创建了一个 data_provider 包和一个存储库包。如果我在 data_provider 中运行 main.dart,一切正常,并且我得到了获取的数据。但如果我想从存储库层获取数据,我会收到此错误:
lib/example/main.dart: Warning: Interpreting this as package URI, 'package:profile_repository/example/main.dart'.
lib/example/main.dart:1
Error: Couldn't resolve the package 'gql_code_builder' in 'package:gql_code_builder/src/serializers/operation_serializer.dart'.
Error: Couldn't resolve the package 'gql_code_builder' in 'package:gql_code_builder/src/serializers/default_scalar_serializer.dart'.
: Error: Not found: 'package:gql_code_builder/src/serializers/operation_serializer.dart'
../…/lib/serializers.gql.dart:135
import 'package:gql_code_builder/src/serializers/operation_serializer.dart'
^
: Error: Not found: 'package:gql_code_builder/src/serializers/default_scalar_serializer.dart'
../…/lib/schema.schema.gql.dart:7
import 'package:gql_code_builder/src/serializers/default_scalar_serializer.dart'
^
: Error: Method not found: 'OperationSerializer'.
../…/lib/serializers.gql.dart:141
..add(OperationSerializer())
^^^^^^^^^^^^^^^^^^^
: Error: Method not found: 'DefaultScalarSerializer'.
../…/lib/schema.schema.gql.dart:1380
static Serializer<GJSON> get serializer => _i2.DefaultScalarSerializer<GJSON>(
main.dart(存储层)
// ignore_for_file: avoid_print, avoid_void_async, unnecessary_lambdas,
import 'package:data_provider/data_provider.dart';
import 'package:ferry/ferry.dart';
import 'package:get_it/get_it.dart';
import 'package:profile_repository/profile_repository.dart';
void main() async {
final client = await initClient();
GetIt.I.registerLazySingleton<Client>(() => client);
try {
final profiles = await ProfileRepository().getProfiles();
print('Profiles: $profiles');
} on Exception catch (e) {
print(e);
}
}
profile_repository:
import 'package:data_provider/data_provider.dart';
/// Thrown when an error occurs while looking up for profiles.
class ProfilesException implements Exception {}
/// {@template profile_repository}
/// Profiles from different categories fetched
/// {@endtemplate}
class ProfileRepository {
/// {@macro profile_repository}
ProfileRepository({ProfileService? profileService})
: _profileService = profileService ?? ProfileService();
final ProfileService _profileService;
/// Returns a list of all club and players profiles.
///
/// Throws a [ProfilesException] if an error occurs.
Future<List<GGetProfilesData_profiles>?> getProfiles() async {
try {
final profiles = await _profileService.getProfiles();
return profiles;
} on Exception {
throw ProfilesException();
}
}
}
profile_service(数据层):
// ignore_for_file: avoid_print
import 'package:built_collection/built_collection.dart';
import 'package:data_provider/data_provider.dart';
import 'package:ferry/ferry.dart';
import 'package:get_it/get_it.dart';
class ProfileService {
final client = GetIt.I<Client>();
Future<List<GGetProfilesData_profiles>?> getProfiles() async {
try {
final profilesReq = GGetProfilesReq();
BuiltList<GGetProfilesData_profiles>? result;
final value = await client.request(profilesReq).first;
RequestHelper.checkError(value);
if (value.data != null && value.data!.profiles != null) {
result = value.data!.profiles;
}
return result?.toList();
} on DataProviderGraphqlErrorException catch (e) {
print(e.toString());
} on DataProviderLinkException catch (e) {
print(e.toString());
}
return List.empty();
}
}
main.dart(data_provider,有什么用!)
// ignore_for_file: avoid_print, avoid_void_async, unnecessary_lambdas,
import 'package:data_provider/data_provider.dart';
import 'package:ferry/ferry.dart';
import 'package:get_it/get_it.dart';
void main() async {
final client = await initClient();
GetIt.I.registerLazySingleton<Client>(() => client);
try {
final profiles = await ProfileService().getProfiles();
print('Profiles: $profiles');
} on Exception catch (e) {
print(e);
}
}
【问题讨论】:
-
您是否尝试将 gql_code_builder 明确放入您的依赖项中:pubspec.yaml 中的部分?
-
我遇到了完全相同的问题。您找到解决方法了吗? @knaecke 明确放置依赖项并不能解决问题。
-
不幸的是我没有。我现在正在使用 artemis。
标签: flutter dart serialization graphql