问题标签 [chopper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
537 浏览

flutter - 在同一页面中使用两个 BLoC 并在第二个 BLoC 中传递第一个 BLoC 的状态

这几天我一直在学习 Flutter 中的 Bloc Pattern。

  1. 我有一个页面需要生成 OTP 并对其进行验证。

  2. 有两个 API(generateOtp、validateOtp)两个实现了这个功能。

  3. 在 generateOtp API 响应中,我需要保存一个密钥,即 uniqueIdentifier。

  4. 然后我需要将上面的 uniqueIdentifier 和 Otp 值(用户输入)传递给 validateOtp API。

  5. 我创建了两个单独的 BLoC... generateOtpBloc、validateOtpBloc。

  6. 使用 MultiBLoC Provider 我正在使用这两个 BLoC。

  1. 我能够调用 API 并在我的 UI 页面中获取 API 响应。

但是如何保存我在 generateOtp 中获得的 uniqueIdentifier 值以及如何在第二个 API 中传递这个 uniqueIdentifier?

我想到了使用 setState() 来设置 uniqueIdentifier 的状态。但我收到一个错误。

generateOtp 和 validateOtp 请求和响应都完全不同……这就是我使用两个不同 BLoC 的原因。

向我建议处理此问题的最佳方法?

0 投票
0 回答
163 浏览

json - Flutter:在斩波转换器中使用 moor 生成的模型 json 工厂

我在我的 Flutter 应用程序中使用 moor 作为本地存储,我创建了表,并 moor 为我生成了模型,使用 fromJson 工厂和 toJson 方法。例子:

我正在使用 chopper 来使用 API,并创建一个 chopper 客户端,我需要告诉它如何序列化和反序列化请求/响应正文。Chopper 通过在创建 Chopper 客户端时设置转换器属性来提供此功能:

我想让 chopper 在我的模型中使用 moor 生成的 fromJson 和 toJson,但我似乎没有找到正确的方法来做到这一点。任何提示,指南表示赞赏。

0 投票
1 回答
318 浏览

flutter - 书:Flutter Apprentice - 尝试从 Api 响应中制作通用 ModelConverter

在Raywenderlich的优秀 Flutter书中第 13 章致力于使用库ChopperJsonConverter从 api 获取响应。

Github 中的代码在这里

他还建议使用像函数式编程这样的响应包装器,类型为 Success/Error。

从响应到成功/错误包装器的 ModelConverter,适用于 APIRecipeQuery 模型,并且仅在一行中使用一种方法final recipeQuery = APIRecipeQuery.fromJson(mapData);。进行泛型转换似乎很合乎逻辑,因为它是一个非常有用的类。

因此,我尝试通过在构造函数中将模型作为参数传递:

recipe_service.dart我用调用它converter: ModelConverter(model: APIRecipeQuery),但我不知道如何静态引用模型,也无法访问该方法model.fromJson

接下来,我尝试只传递函数转换器:

在 API 中使用 getter,并recipe_service.dart使用converter: ModelConverter(fromJson: APIRecipeQuery.fjConverter)

但我无法让它工作。

使 ModelConverter 通用的最佳方法是什么?提前谢谢。

0 投票
2 回答
488 浏览

api - Flutter Chopper 401 更新和重试拦截器

我在我的颤振应用程序中使用 Chopper,我需要做的是,当我从我的 API 获得 401 响应状态代码(未经授权)时,我必须调用另一个端点来刷新我的令牌并将其保存到安全存储中,当所有完成后,我需要立即重试请求(这样用户就不会注意到他的令牌已过期)。这仅适用于 Chopper,还是我必须使用其他包?

0 投票
1 回答
431 浏览

flutter - 在 ChopperClient 颤振中添加多个转换器

我正在使用 json-annotation 为不同的响应集创建不同的 .g.dart 类。现在,当我使用 Chopper Client 发出请求并将响应映射到模型类时,我正在创建转换器。但我只能为斩波器客户端分配一个转换器。我想要实现的是使用 get_it 包来初始化 chopper 客户端。如何在发出不同请求时为斩波器客户端分配不同的转换器。 这是 get_it 包用于初始化类的基类。

base.dart

我正在使用 HomeModelConverter 发出 Get 请求并将响应映射到 HomeModelResponse 的这个 ChopperService 类,并且这个 HomeModelConverter 在上面的 chopper 客户端对象中分配。

home_api_service.dart

这是特定于 HomeModelResponse 的转换器类。在 decodeJson 函数中,我们明确提到它来解码到 HomeModelResponse。

home_model_converter.dart

这是 HomeModelResponse,传入的响应将自动映射到其中。

home_model_response.dart

上面的代码对 home_api_service 工作正常,我得到了正确的响应。 现在我想创建另一个服务,例如 AddApiService。这将有不同的转换器。如何在斩波器客户端中动态更改转换器。现在 HomeModelConverter 在初始化时是硬编码分配的。我不想为每个转换器创建多个 ChopperClient。卡在这里。或任何创建通用转换器的选项

如果有人可以建议这种方法是否可行,或者是否有更好的方法可以遵循。

0 投票
0 回答
210 浏览

flutter - 从 3.0.1 => 4.0.1 升级后颤振斩波器构建失败,请帮助了解生成器输出

我确实将我的颤振项目升级到了颤振2,作为升级的一部分,我确实将斩波器版本从 3.0.1 升级到了 4.0.1 nullsafety。之后,命令flutter packages pub run build_runner watch --delete-conflicting-outputs开始显示错误,这很难理解,因为我什至找不到错误消息指向的代码。这是错误输出片段:

在第 29 行的源代码 lib/data/api/my_api.dart 中,没有显示消息,但有:在此处输入图像描述

我确实搜索了所有项目文件,但没有找到任何包含显示我的代码错误消息的文件。查看变量类型和名称,可以假设与 my_api.dart 代码中的错误匹配的行是:

但我无法弄清楚他们有什么问题?

- -更新 - -

找到答案https://www.gitmemory.com/issue/lejard-h/chopper/249/824860498 将其添加到 pubspec.yaml 后,我生成了我的 chopper api

但这对我来说不是解决方案,因为我的项目不是 nullsafey,它使用的是 sdk>=2.9.0。似乎只有艰难的方法,那就是做空安全迁移((。谢谢

0 投票
0 回答
72 浏览

flutter - 尝试使用斩波器将文件上传到服务器

我第一次使用斩波器,所以我需要将文件上传到服务器。在这里我不确定是否正确使用该文件,这是我的代码:

这是我用 Provider 调用 postDocuments 的函数,当我在控制台中调用它时,我得到'将对象转换为可编码对象失败:'_File' 的实例'

0 投票
0 回答
271 浏览

flutter - Flutter Chopper:如何创建具有多种服务的客户端?

目前我有这些代码:

然后我这样称呼它:

但我看到它接受不止一种服务......

我可以以某种方式降低代码量吗?(如果没有,我将再上 5 节这样的课……)

如果可能,如何以及如何使用它?

编辑:

它是这样工作的:

您创建服务,例如:

文件:test_api.dart

创建客户端:

然后你可以使用这样的服务:

0 投票
2 回答
392 浏览

json - 为什么在尝试使用颤振斩波器和内置值调用方法时出现错误?

我收到以下错误,我相信这是因为 null 安全,这意味着没有收到任何数据或 getSignedInUser() 方法不正确或类BuiltValueConverter是原因。

(我用 Postman 测试了令牌并检索了数据)

E/flutter (21792): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] 未处理的异常:未处理的错误 Null 检查运算符用于空值,发生在“AuthBloc”实例中。E/flutter (21792): #0
BuiltValueConverter._deserialize package:todo_list_app/…/auth/built_value_converter.dart:51 E/flutter (21792): #1 BuiltValueConverter._convertToCustomObject package:todo_list_app/…/auth/built_value_converter.dart:36 E/flutter (21792):#2 BuiltValueConverter.convertResponse 包:todo_list_app/…/auth/built_value_converter.dart:25

我正在使用带有built_value Pubs 的斩波器。我正在尝试将即将到来的 json 转换为对象。例子:

{“用户名”:“杰克”,“电子邮件”:“jack2066@gmail.com”,“用户角色”:“用户”,“created_at”:“2021-07-03T16:49:56.774Z”,“updated_at”: “2021-07-03T16:49:56.774Z”}

错误开始的以下代码也在本教程转换器和内置值集成中进行了说明

这是我的 Chopper 服务代码,getSignedInUser抛出错误。我不知道getSignedInUser方法的实现是否正确。

知道如何解决此错误吗?还有 Chopper 或具有良好文档的替代 pub 的良好文档吗?谢谢

0 投票
0 回答
44 浏览

flutter - Flutter Chopper Post 图片

我尝试使用颤振斩波器发送图像。我尝试以 2 种不同的方式来做,但没有一个工作。

我在 Postman 测试了我的 API,这个设置正在运行:

在此处输入图像描述

在此处输入图像描述