小编bof*_*mer的帖子

Dart Streams API(使用 rxdart)与其他反应式库(例如 RxJava 和 RxJS)之间的主要区别是什么?

现在我正在尝试将现有反应式 Angular 应用程序(基于 RxJS)的逻辑移植到 Flutter。我在 dart Streams API 方面遇到了很多问题,它的行为似乎与其他 Rx 实现有很大不同。

主要区别在于:

  • 错误和完成事件
  • null/void值处理
  • 流的可重用性
  • 多播 ( publish, refcount, shareReplay)
  • 订阅管理

stream reactive-programming dart flutter

6
推荐指数
1
解决办法
3611
查看次数

Dart http:在获取新的访问令牌后重试 http.Request 时,“错误状态:无法完成最终的请求”

我目前正在尝试访问 Flutter 中需要 JWT 访问令牌进行授权的 Web API。访问令牌在一定时间后过期。

可以使用单独的刷新令牌请求新的访问令牌。现在,只要请求返回 401 响应,就会执行此访问令牌刷新。之后,应使用新的访问令牌重试失败的请求

我在这最后一步遇到了麻烦。好像http.BaseRequest只能发送一次。我将如何使用新令牌重试 http 请求?


正如dart http readme 中所建议的,我创建了一个子类http.BaseClient来添加授权行为。这是一个简化版本:

import 'dart:async';

import 'package:http/http.dart' as http;

class AuthorizedClient extends http.BaseClient {
  AuthorizedClient(this._authService) : _inner = http.Client();

  final http.Client _inner;
  final AuthService _authService;

  Future<http.StreamedResponse> send(http.BaseRequest request) async {
    final token = await _authService.getAccessToken();
    request.headers['Authorization'] = 'Bearer $token';

    final response = await _inner.send(request);

    if (response.statusCode == 401) {
      final newToken = await _authService.refreshAccessToken();
      request.headers['Authorization'] = 'Bearer $newToken'; …
Run Code Online (Sandbox Code Playgroud)

dart dart-http flutter

5
推荐指数
2
解决办法
2792
查看次数

如何创建一个覆盖屏障来捕获 onTap 事件,并将它们传递到后面的小部件?

我的问题是:如何创建一个“监视”并对点击手势做出反应而不消耗它们的小部件?


我想创建一个TextField在聚焦时在字段下方的弹出窗口中显示自动完成建议的窗口(类似于 Google 搜索)。

当用户点击屏幕外部时,覆盖层应该关闭TextField,但不消耗点击事件

例如,如果用户在建议叠加层可见时点击复选框,则叠加层应关闭并且复选框应切换。

我查看了 Flutter 的源代码DropdownButton,它在 a 中显示下拉项列表PopupRoute,可以通过点击屏幕来关闭该列表。在内部,PopupRoute创建一个屏幕填充ModalBarrier,用 a 捕获点击事件GestureDetector(但它消耗手势事件并且不传递它们)。

flutter

5
推荐指数
1
解决办法
1203
查看次数