小编biz*_*z84的帖子

使用 ShellRoute 和 GoRouter 5.0 在选项卡之间切换时如何返回嵌套路由?

ShellRouteI\xe2\x80\x99m 尝试在 go_router 5.0 中使用嵌套导航。

\n

如下例所示,单击产品时我可以正确导航到(嵌套)产品页面。

\n

但是,如果我切换到购物车选项卡并返回到产品,我将返回到(根)产品页面而不是(嵌套)产品页面:

\n

使用 GoRouter 5.0 的 ShellRoute 示例

\n

这就是我设置路由器的方式:

\n
enum AppRoute {\n  products,\n  product,\n  cart,\n  account,\n}\n\nfinal goRouter = GoRouter(\n    initialLocation: \'/products\',\n    navigatorKey: _rootNavigatorKey,\n    debugLogDiagnostics: true,\n    routes: [\n      ShellRoute(\n        navigatorKey: _shellNavigatorKey,\n        builder: (context, state, child) {\n          return ScaffoldWithBottomNavBar(child: child);\n        },\n        routes: [\n          // Products\n          GoRoute(\n            path: \'/products\',\n            name: AppRoute.products.name,\n            redirect: (context, state) {\n              print(state.toString());\n              return null;\n            },\n            pageBuilder: (context, state) => NoTransitionPage(\n              key: state.pageKey,\n              restorationId: state.pageKey.value,\n              child: const ProductsListScreen(),\n            ),\n            routes: [\n              GoRoute(\n                path: \':id\',\n                name: …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-go-router

17
推荐指数
1
解决办法
6322
查看次数

如何使用NSPredicate在NSDate中按天分组 - 需要创建多个UITableView部分

也可以看看

核心数据按日期排序使用FetchedResultsController分段

有没有办法按日期对CoreData实体中的对象进行分组,并使用它们在UITableView控件上创建多个部分?

本质上,我需要一些等同于以下伪SQL的东西,其中my_group_criteria()按天分组所有测试:

SELECT * FROM tests GROUP BY my_group_criteria(date)
Run Code Online (Sandbox Code Playgroud)

例如,查询会将以下行分为3个单独的部分:

[test1 | 2013-03-18 15.30.22]
[test2 | 2013-03-18 14.30.22]
[test3 | 2013-03-18 13.30.22]

[test4 | 2013-03-17 18.30.22]
[test5 | 2013-03-17 19.30.22]

[test6 | 2013-03-15 20.30.22]
Run Code Online (Sandbox Code Playgroud)

正如2中已经回答的那样,NSPredicate不适用于对实体进行分组,因此这可能不是最佳选择.

鉴于此,我如何根据类似于SQL GROUP BY的标准在UITableView中创建多个部分?

我想尽可能避免直接访问SQL-lite数据库.

相关问题1: NSPredicate:按NSDate属性的日期过滤对象

相关问题2: NSPredicate等同于SQL的GROUP BY

sql core-data uitableview ios

16
推荐指数
1
解决办法
7280
查看次数

在更改一项后收听集合时,Firestore 会读取多少个内容?

假设我有一个包含 10 个项目的 Firestore 集合,并且我的应用程序侦听该集合的快照以获取实时更新,并在列表视图中显示结果。

如果我更新该集合中的一个文档,将发出一个新快照,以便我可以重建列表视图。

但是会发生多少次读取呢?

自从重建整个列表视图后,我是否会获得 10 次额外读取(因为我有整个集合的侦听器)?

或者 Firebase SDK 是否足够智能,能够找出只有一个文档发生了更改,并通过与前一个(缓存的?)文档进行比较来计算新快照,从而导致一个只读?

这是文档在这方面的说法:

监听查询结果

Cloud Firestore 允许您监听查询结果并在查询结果发生变化时获取实时更新。

当您侦听查询结果时,每次添加或更新结果集中的文档时,您都需要支付读取费用。当文档因文档已更改而从结果集中删除时,您还需支付读取费用。(相比之下,删除文档后,您无需支付阅读费用。)

我的解释是,如果我这样做:

collectionRef.snapshots().listen((event) { ... });
Run Code Online (Sandbox Code Playgroud)

那么每次更改我应该获得 1 次阅读。

但是如果我使用collectionRef.snapshots()流来重建 UI(没有显式侦听器)怎么办?这会导致 1 次读取还是 N 次读取?

这最初被标记为与此重复。但问题是不同的,因为我询问的是在文档更改时监听父集合(而不是监听文档本身)。

firebase google-cloud-firestore

9
推荐指数
1
解决办法
331
查看次数

Firebase Cloud Functions V2:请求未被授权调用此服务

我尝试从客户端应用程序调用可调用的云函数(已部署)并在 GCP 日志上收到此错误:

{
httpRequest: {9}
insertId: "647865c20002422d2d32b259"
labels: {1}
logName: "projects/faker-app-flutter-firebase-dev/logs/run.googleapis.com%2Frequests"
receiveTimestamp: "2023-06-01T09:32:50.154902339Z"
resource: {2}
severity: "WARNING"
spanId: "11982344486849947204"
textPayload: "The request was not authorized to invoke this service. Read more at https://cloud.google.com/run/docs/securing/authenticating Additional troubleshooting documentation can be found at: https://cloud.google.com/run/docs/troubleshooting#401"
timestamp: "2023-06-01T09:32:50.138090Z"
trace: "projects/faker-app-flutter-firebase-dev/traces/ddcb5a4df500af085b7a7f6f89a72ace"
traceSampled: true
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

相同的功能可以在 Firebase 本地模拟器中正常工作,因此我认为这是与 IAM 和服务帐户相关的权限问题(我仍然不太了解 IAM 的工作原理)。

这是我的代码:

import * as admin from "firebase-admin"
import * as functions from "firebase-functions/v2"
import * as logger from "firebase-functions/logger";

// https://github.com/firebase/firebase-tools/issues/1532
if (admin.apps.length === …
Run Code Online (Sandbox Code Playgroud)

firebase google-cloud-platform

7
推荐指数
1
解决办法
1638
查看次数

如何在 iOS 上使用嵌入式 HTTP 服务器实现视频搜索支持?

我有一个客户端 iOS 应用程序,它使用GCDWebServer来提供存储在NSSearchPathDirectory.DocumentDirectory我设备上应用程序文件夹中的图像和视频。

在应用程序启动时,我启动一个实例GCDWebServer并为我的请求添加一个文件响应处理程序:

self.addDefaultHandlerForMethod("GET", requestClass: GCDWebServerFileRequest.self) { request in

    return GCDWebServerFileResponse(file: self.filePathForResponse(request.URL))
}
Run Code Online (Sandbox Code Playgroud)

我可以验证在应用程序运行时我可以从我的设备成功下载文件:

curl -O http://192.168.0.15:8080/files/IMG_1213-1280x720.MOV
Run Code Online (Sandbox Code Playgroud)

我的应用程序通过将上述 URL 发送到媒体频道来与 Chromecast 设备通信,Chromecast 接收器应用程序加载并播放指定 URL 处的视频 - 到目前为止一切正常。

我的问题是我想为当前播放的视频实现寻求支持,一旦我向媒体频道发送了一个搜索请求,我就会收到“Broken pipe”错误,GCDWebServer视频播放被中断。来自服务器的日志如下:

....
[DEBUG] Connection sent 32768 bytes on socket 24
[DEBUG] Connection sent 32768 bytes on socket 24
[ERROR] Error while writing to socket 24: Broken pipe (32)
[DEBUG] Did close connection on socket 24
Run Code Online (Sandbox Code Playgroud)

我对这个问题的最佳理解是正常播放是有效的,因为它与从头到尾下载文件相同,这可以使用常规GCDWebServerFileResponse,但是寻找相当于“跳转”到文件的不同部分,我我不确定读取这样的文件是否适用于我的配置。

  • 有没有一种方法可以配置GCDWebServer使这项工作?我知道这个问题可以解决,因为有几个实时应用程序可以做到这一点。
  • 我是否需要使用支持 HLS …

webserver video-streaming ios gcdwebserver

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

Flutter Widget测试:StreamBuilder快照具有connectionState =等待非空Stream

我正在尝试为使用的窗口小部件编写窗口小部件测试StreamBuilder。在构建器中,我返回一个CircularProgressIndicatorif snapshot.hasDatais false,否则返回一个ListView窗口小部件。

在我的测试中,我创建了一个,StreamController并向其中添加了一个元素。当我运行测试时,我希望看到snapshot.hasData= true,但是相反,它false可以看到connectionStateis waiting。所以我的测试失败了。

不知何故,似乎第一个元素并未从流中拉出,并且连接仍保持waiting状态。我不确定自己在做什么错。

这是我的小部件测试:

testWidgets('Job item pressed - shows edit job page',
  (WidgetTester tester) async {
StreamController<List<Job>> controller =
    StreamController<List<Job>>.broadcast(sync: true);

Job job = Job(id: '0', createdAt: 0, jobName: 'Dart');
controller.add([job]);

final page = JobsPage(
  jobsStream: controller.stream,
);
MockRouter mockRouter = MockRouter();
await tester.pumpWidget(makeTestableWidget(
  child: page,
  auth: MockAuth(),
  database: MockDatabase(),
  router: mockRouter,
));

Finder waiting = …
Run Code Online (Sandbox Code Playgroud)

dart flutter

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