ShellRoute
I\xe2\x80\x99m 尝试在 go_router 5.0 中使用嵌套导航。
如下例所示,单击产品时我可以正确导航到(嵌套)产品页面。
\n但是,如果我切换到购物车选项卡并返回到产品,我将返回到(根)产品页面而不是(嵌套)产品页面:
\n\n这就是我设置路由器的方式:
\nenum 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) 有没有办法按日期对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
假设我有一个包含 10 个项目的 Firestore 集合,并且我的应用程序侦听该集合的快照以获取实时更新,并在列表视图中显示结果。
如果我更新该集合中的一个文档,将发出一个新快照,以便我可以重建列表视图。
但是会发生多少次读取呢?
自从重建整个列表视图后,我是否会获得 10 次额外读取(因为我有整个集合的侦听器)?
或者 Firebase SDK 是否足够智能,能够找出只有一个文档发生了更改,并通过与前一个(缓存的?)文档进行比较来计算新快照,从而导致一个只读?
这是文档在这方面的说法:
监听查询结果
Cloud Firestore 允许您监听查询结果并在查询结果发生变化时获取实时更新。
当您侦听查询结果时,每次添加或更新结果集中的文档时,您都需要支付读取费用。当文档因文档已更改而从结果集中删除时,您还需支付读取费用。(相比之下,删除文档后,您无需支付阅读费用。)
我的解释是,如果我这样做:
collectionRef.snapshots().listen((event) { ... });
Run Code Online (Sandbox Code Playgroud)
那么每次更改我应该获得 1 次阅读。
但是如果我使用collectionRef.snapshots()
流来重建 UI(没有显式侦听器)怎么办?这会导致 1 次读取还是 N 次读取?
这最初被标记为与此重复。但问题是不同的,因为我询问的是在文档更改时监听父集合(而不是监听文档本身)。
我尝试从客户端应用程序调用可调用的云函数(已部署)并在 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) 我有一个客户端 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
使这项工作?我知道这个问题可以解决,因为有几个实时应用程序可以做到这一点。我正在尝试为使用的窗口小部件编写窗口小部件测试StreamBuilder
。在构建器中,我返回一个CircularProgressIndicator
if snapshot.hasData
is false
,否则返回一个ListView
窗口小部件。
在我的测试中,我创建了一个,StreamController
并向其中添加了一个元素。当我运行测试时,我希望看到snapshot.hasData
= true
,但是相反,它false
可以看到connectionState
is 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 ×2
firebase ×2
flutter ×2
ios ×2
core-data ×1
gcdwebserver ×1
sql ×1
uitableview ×1
webserver ×1