{"repo":"rundfunk47/stinsen","free":true,"listed":false,"github":"https://github.com/rundfunk47/stinsen","clone":"git clone https://github.com/rundfunk47/stinsen.git","description":"Coordinators in SwiftUI. Simple, powerful and elegant.","language":"Swift","stars":956,"topics":["coordinator-pattern","coordinator","coordinators","swiftui","swift5","swift","mvvm","mvvm-c","ios","tvos"],"license":"MIT","category":"mobile-apps","readme_excerpt":"Simple, powerful and elegant implementation of the Coordinator pattern in SwiftUI. Stinsen is written using 100% SwiftUI which makes it work seamlessly across iOS, tvOS, watchOS and macOS devices. Why? 🤔 We all know routing in UIKit can be hard to do elegantly when working with applications of a larger size or when attempting to apply an architectural pattern such as MVVM. Unfortunately, SwiftUI out of the box suffers from many of the same problems as UIKit does: concepts such as NavigationLink live in the view-layer, we still have no clear concept of flows and routes, and so on. Stinsen was created to alleviate these pains, and is an implementation of the Coordinator Pattern . Being written in SwiftUI, it is completely cross-platform and uses the native tools such as @EnvironmentObject . The goal is to make Stinsen feel like a missing tool in SwiftUI, conforming to its coding style and general principles. What is a Coordinator? 🤷🏽‍♂️ Normally in SwiftUI, the view has to handle adding other views to the navigation stack using NavigationLink . What we have here is a tight coupling between the views, since the view must know in advance all the other views that it can navigate between. Also, the view is in violation of the single-responsibility principle (SRP). Using the Coordinator Pattern, presented to the iOS community by Soroush Khanlou at the NSSpain conference in 2015, we can delegate this responsibility to a higher class: The Coordinator. How do I use Stinsen? 👩🏼‍🏫 ","default_branch":null,"files":null,"tree":[],"storefront":"/r/rundfunk47","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/rundfunk47/stinsen/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}