S. Yacko
S. Yacko

Reputation: 692

Import for proto.dart is not found

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

Answers (1)

S. Yacko
S. Yacko

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

Related Questions