在lib目录- dart之外导入和使用protobufs



我正在尝试构建一个web应用程序与Flutter为前端,去后端和gRPC作为通信协议。为了避免在两个不同的目录中使用相同的protobufs,我重构了protobufs,并将它们编译到客户端和服务器文件夹之外的第三个目录中(都在同一个repo中)。现在,我在从客户端代码访问已编译的dart protobufs时遇到了麻烦。下面是我的文件夹结构:

.
|-- client/
|-- pubspec.yaml
|-- protos/
|-- dart_protos/
|-- .dart_tool/
|-- .packages
|-- cards.pb.dart
|-- cards.pbenum.dart
|-- cards.pbjson.dart
|-- cards.pbserver.dart
|-- pubspec.lock
|-- pubscpec.yaml
|-- go_protos/
|-- cards.proto
|-- server/

下面是我在client/pubspec.yaml

中定义依赖项的方法
dependencies:
flutter:
sdk: flutter
recase: ^4.0.0
search_choices: ^2.0.7
tcb_protos:
path: ../protos/dart_protos

Myprotos/dart_protos/pubspec.yaml:

name: tcb_protos
environment:
sdk: ">=2.0.0-dev.68.0 <3.0.0"
dependencies:
protobuf: ^1.1.4
protoc_plugin: ^19.3.1

和我如何导入protobuf:

import 'package:tcb_protos/cards.pb.dart';

所以我遇到了几个问题:

  1. 我在进口
  2. 上得到Target of URI hasn't been generated: 'package:tcb_protos/cards.pb.dart'.
  3. 我无法使用基于导入的protobuf,并且VSCode的智能感知在包上不起作用(我认为这是因为包定义或导入错误)

我在颤振部件使用protobuf如何?

您需要在lib/文件夹中有.pb.dart原型文件。

我在这里做了一个小例子:https://github.com/sigurdm/shared_proto_example

如果你想让不同包中的protos相互引用,目前还不支持:https://github.com/google/protobuf.dart/issues/295

最新更新