Use protobuf in Flutter

概述

在Flutter项目中使用protobuf,macOS上环境配置及Flutter工程配置。

步骤

下载protobuf:https://github.com/protocolbuffers/protobuf/releases
这里以protoc-3.8.0-osx-x86_64.zip为例
或者:

1
brew install protobuf

安装dart

1
2
brew tap dart-lang/dart
brew install dart

dart安装好后,就有pub命令了。

安装protoc_plugin

1
pub global activate protoc_plugin

这个protoc_plugin一定要安装,protoc默认不支持dart.
将protoc-gen-dart添加到path
在~/.bash_profile或~/.zshrc添加

1
export "$PATH:$PWD/.pub-cache/bin"

如果没有添加到PATH也可以在protoc参数是增加

1
protoc --dart_out=. test.proto --plugin ~/.pub-cache/bin/protoc-gen-dart

安装好后,就有protoc-gen-dart命令了。
如果没有安装以上工具,使用–dart_out编译时会报错

1
2
protoc-gen-dart: program not found or is not executable
--dart_out: protoc-gen-dart: Plugin failed with status code 1.

在Flutter项目中引入protobuf库

在pubspec.ymal中添加以下依赖

1
protobuf: ^0.13.12

在编译官方示例过程addressbook.proto过程,如果报错找不到google/protobuf/timestamp.pb.dart
则需要单独编译下载包里的protoc-3.8.0-osx-x86_64/include/google/protobuf/timestamp.proto

1
protoc -I=~/Downloads/protoc-3.8.0-osx-x86_64/include/ --dart_out=. google/protobuf/timestamp.proto

如果缺少其他文件,可类似处理。

Reference

  1. 在Flutter中使用protobuf