
正文
fluttergrpc的简单介绍
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Flutter中使用gRPC
gRPC是谷歌开发的一款远程过程调用系统,可以让客户端像调用本地对象一样使用服务端应用的方法,使用protocol buffers接口定义语言来定义服务方法,protocol buffer定义参数和返回类型。
protobuf类似json,是一种数据结构协议,在android studio中安装Protobuf Support,方便查看编写的proto文件
dart使用proto插件将proto文件生成对应的dart文件,使用如下步骤
1、安装flutter之后,再flutter的下面路径中有pub命令,需要将命令加入到path中。
可以vi ~/.zshrc,在文件中加入source ~/.bash_profile,然后在vi ~/.bash_profile文件中加入下面路径(:分割不同的路径)
export PATH=/Users/webull/app/flutter/bin:/Users/webull/app/flutter/bin/cache/dart-sdk/bin:/Users/webull/.pub-cache/bin:$PATH
其中fluter/bin是flutter的命令路径,dart-sdk/bin中包含了pub和其他dart命令,.pub-cache/bin是之后运行pub之后建立的路径,里面包含了proto-gen-dart命令,用来将proto文件转换为dart的命令
2、使用下面的命令安装proto插件
$ pub global activate protoc_plugin
安装完成后,上面的用户目录中的.pub-cache目录才会有proto-gen-dart文件。
1、其中/Users/webull是我的用户目录 app/flutter是flutter的安装目录
参考:
1、gRPC介绍
2、gRPC配置
相关问答
Q1: Grpc-dart 不能处理 401
JWT 如果判断 Token 失效, 会直接返回 401 . 但是在 Flutter 中, 无法处理...
catch 到的 GrpcError 一直是 unimplemented , 而不是期待的 unauthenticated
先用拦截器打印出 401 时响应的 headers.
401 时, 返回 content-length: 0 .
在看看 Flutter 中 ResponseFuture (\pub.flutter-io.cn\grpc-2.8.0\lib\src\client\common.dart) 的定义:
在父构造函数中, 首先判断的 _call.respnose 是不是收到多次, 其次判断它是不是为 null .
这个地方如果先判断 _call.headers[":status"] 是不是 401 就可以了. 但是 _call.headers 又是一个 FutureMapString,String , 需要用到 async/await , 但是在构造函数中, 使用异步???脑壳有点大...蛋疼...
我也尝试用拦截器:
但是 get 不到关键点, 无法用 GrpcError.unauthenticated() 替换原有异常...







