在flutter_bloc- Login? 教程中流式AuthentificationRepository傳輸身份驗證狀態,如下所示:
Stream<AuthenticationStatus> get status async* {
await Future<void>.delayed(const Duration(seconds: 1));
yield AuthenticationStatus.unauthenticated;
yield* _controller.stream;
}
在我的帶有后端的真實應用程式中,如果他的會話不再有效,我還想流式傳輸以便將用戶重新路由出去AuthentificationStatus
這個實作在真正的應用程式中會是什么樣子?
我是否必須每秒查詢我的 API 才能實作類似的流?
我愿意建議實施這種重新路由行為并流式傳輸AuthentificationStatus
uj5u.com熱心網友回復:
您不應將status流的使用解釋為網路訪問的某種占位符。
這些示例中存盤庫背后的想法是,跨應用程式的多個業務組件(塊或肘)提供對(域)資料的通用訪問。
查看這篇文章:例如,VGV 的https://verygood.ventures/blog/very-good-flutter-architecture。
兩個獨立的塊可以AuthentificationRepository通過呼叫類似getStatus.
status在這里,如果您想主動通知 bloc 或 cubits 狀態更改,則流非常有用,以便應用程式的不同部分能夠做出相應的反應,而無需自己呼叫存盤庫。在這種情況下,這就是status流的用途,無論您如何獲得“真實”身份驗證狀態。
如果您真的想將資訊從后端“推送”到客戶端,有很多方法可以做到這一點。但請記住,客戶端可能處于離線狀態,并且資訊可能根本無法到達客戶端。您可以使用 WebSockets、輪詢(您的建議)或 Firebase 訊息傳遞,僅舉幾個選項。
就個人而言,我寧愿嘗試訪問后端并在每次呼叫時提交某種令牌。如果請求以 HTTP 狀態 401 或 403 失敗,我會AuthentificationRepository告知用戶不再經過身份驗證。然后它將通知訂閱者該status流。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/490335.html
