SwiftCurrent 是一个库,可以让你轻松管理 Swift 应用程序中的流程,并内置了对 UIKit 和 SwiftUI 应用路由的支持。
在 SwiftCurrent 中,工作流是一系列操作。这些操作通常在应用程序中显示视图。工作流描述了视图的顺序,并管理应该显示哪个视图。你的视图负责在工作流程中前进之前执行必要的任务,例如处理用户输入。
已经存在尝试在视图和工作流之间创建分离的架构模式和库。 然而,SwiftCurrent 是不同的。 我们采用了一种新的设计方法,侧重于:
这个库:
当我们有一个示例应用程序时,为什么要展示快速入门? 因为入门非常容易,我们可以放入两个代码片段,你就准备好了! 这个快速入门使用 Swift Package Manager 和 SwiftUI,但对于其他方法,请参阅我们的安装说明。
.package(url: "https://github.com/wwt/SwiftCurrent.git", .upToNextMajor(from: "5.1.0")),
...
.product(name: "SwiftCurrent", package: "SwiftCurrent"),
.product(name: "SwiftCurrent_SwiftUI", package: "SwiftCurrent")
然后创建你的第一个 FlowRepresentable 视图
import SwiftCurrent
import SwiftUI
struct OptionalView: View, FlowRepresentable {
weak var _workflowPointer: AnyFlowRepresentable?
let input: String
init(with args: String) { input = args }
var body: some View { Text("Only shows up if no input") }
func shouldLoad() -> Bool { input.isEmpty }
}
struct ExampleView: View, PassthroughFlowRepresentable {
weak var _workflowPointer: AnyFlowRepresentable?
var body: some View { Text("This is ExampleView!") }
}
然后从你的 ContentView
或任何你想包含工作流程的视图(或应用程序)中,将以下视图添加到 body 中
import SwiftCurrent_SwiftUI
// ...
var body: some View {
// ... other view code (if any)
WorkflowView(launchingWith: "Skip optional screen") {
WorkflowItem(OptionalView.self)
WorkflowItem(ExampleView.self)
}
}
就是这样,你就有了一个工作流程! 现在,你可以向其中添加更多项目或重新排序现有项目。 要了解更多有关其工作原理的信息,请查看我们的开发者文档。
SwiftCurrent 现在支持服务器驱动的工作流程! 查看我们的 schema 以获取有关使用 JSON、YAML 或任何其他基于键/值的数据格式定义工作流程的详细信息。 然后,只需将你希望解码的 FlowRepresentable
类型遵循 WorkflowDecodable
并解码工作流程。 有关更多信息,请参阅我们的文档。
我们有针对 SwiftUI 和 UIKit 的 示例应用程序,展示了 SwiftCurrent 的实际应用。 它们已经过测试,因此你可以看到测试 SwiftCurrent 代码是什么样的。 要在本地运行它,请首先克隆 repo,打开 SwiftCurrent.xcworkspace
,然后运行 SwiftUIExample
scheme 或 UIKitExample
scheme。
有关具体文档,请查看:
如果你喜欢你所看到的,请考虑 给我们一个 star! 如果你不喜欢,请告诉我们 如何改进。
如果没有我们的测试依赖项的作者所做的出色工作,SwiftCurrent 就不会如此出色: