Reputation: 692
I'm new to gRPC in Dart/Flutter and hope this is a straightforward solution for my issue.
I have installed grpc: ^4.0.1 & protobuf: ^3.1.0 in pubspec. Run protoc install, created the proto files, generated the dart files. All worked great.
I wanted to import the protos.dart into my main.dart and getting: Target of URI doesn't exist: 'package:dave_knows/protos/lib/protos.dart'
File Structure /lib/main.dart contains
import 'package:dave_knows/protos/lib/protos.dart'; and
import 'package:grpc/grpc.dart';
/protos/lib/protos.dart contains
library;
export 'package:protos/src/protos_base.dart';
export 'package:protos/generated/configure_new_user.pb.dart';
export 'package:protos/generated/configure_new_user.pbenum.dart';
export 'package:protos/generated/configure_new_user.pbjson.dart' ;
export 'package:protos/generated/configure_new_user.pbgrpc.dart' ;
export 'package:protos/generated/google/protobuf/empty.pb.dart' ;
export 'package:protos/generated/google/protobuf/empty.pbenum.dart' ;
export 'package:protos/generated/google/protobuf/empty.pbjson.dart' ;
export 'package:grpc/grpc.dart';
package:protos/generated/configure_new_user.pbgrpc.dart contains
import 'dart:async' as $async;
import 'dart:core' as $core;
import 'package:grpc/service_api.dart' as $grpc;
import 'package:protobuf/protobuf.dart' as $pb;
import 'configure_new_user.pb.dart' as $0;
import 'google/protobuf/empty.pb.dart' as $1;
export 'configure_new_user.pb.dart';
@$pb.GrpcServiceName('ConfigureNewUser')
class ConfigureNewUserClient extends $grpc.Client {
static final _$configureNewUser = $grpc.ClientMethod<$0.NewUser, $1.Empty>(
'/ConfigureNewUser/configureNewUser',
($0.NewUser value) => value.writeToBuffer(),
($core.List<$core.int> value) => $1.Empty.fromBuffer(value));
ConfigureNewUserClient($grpc.ClientChannel channel,
{$grpc.CallOptions? options,
$core.Iterable<$grpc.ClientInterceptor>? interceptors})
: super(channel, options: options,
interceptors: interceptors);
$grpc.ResponseFuture<$1.Empty> configureNewUser($0.NewUser request, {$grpc.CallOptions? options}) {
return $createUnaryCall(_$configureNewUser, request, options: options);
}
}
@$pb.GrpcServiceName('ConfigureNewUser')
abstract class ConfigureNewUserServiceBase extends $grpc.Service {
$core.String get $name => 'ConfigureNewUser';
ConfigureNewUserServiceBase() {
$addMethod($grpc.ServiceMethod<$0.NewUser, $1.Empty>(
'configureNewUser',
configureNewUser_Pre,
false,
false,
($core.List<$core.int> value) => $0.NewUser.fromBuffer(value),
($1.Empty value) => value.writeToBuffer()));
}
$async.Future<$1.Empty> configureNewUser_Pre($grpc.ServiceCall call, $async.Future<$0.NewUser> request) async {
return configureNewUser(call, await request);
}
$async.Future<$1.Empty> configureNewUser($grpc.ServiceCall call, $0.NewUser request);
}
When I let the IDE create the file, it lands at /lib/protos/lib/protos.dart, not /protos/lib/protos.dart.
Where did I go wrong? Thank you in advance!
Flutter/Dart version
Flutter 3.28.0-2.0.pre.38785 • channel master • https://github.com/flutter/flutter.git
Framework • revision b9e86a565f (6 days ago) • 2025-01-17 18:26:17 -0800
Engine • revision b9e86a565f
Tools • Dart 3.8.0 (build 3.8.0-1.0.dev) • DevTools 2.42.0
Upvotes: 0
Views: 21
Reputation: 692
The issue is that I generated the dart files in the /protos directory, per the YouTube video tutorial. The correct location is the /lib directory. I generated pointing to /lib/generated and everything worked.
Upvotes: 0