直播app原始碼,跳轉站外連結或平臺內部跳轉頁面
直播app原始碼,跳轉站外連結或平臺內部跳轉頁面實現的相關程式碼
}); } else { await Future.delayed(Duration(milliseconds: 10)); showLoading(); } } @override void dispose() { super.dispose(); setIsDispose(true); viewModel.showLoadingFun = null; viewModel.dismissLoadingFun = null; } } abstract class BaseViewModel extends ChangeNotifier with BaseViewModelInterface, NavigatorMixin, ToastMixin, SharePreferenceMixin, EventBusMixin, DataBaseMixin { int _loadNum = 0; int _minLoadNum = 1; late BuildContext context; late M model; bool _isDispose = false; bool get isDispose => _isDispose; int needLoadingRequestCount = 0; bool isLoading = false; Function()? showLoadingFun; Function? dismissLoadingFun; static bool isNeedCatchError = false; set minLoadNum(int value) { _minLoadNum = value; } set loadNum(int value) { _loadNum = value; } int get loadNum { return _loadNum; } void notifyPage() { if (!_isDispose) { loadNum++; print(">loadNum:$loadNum"); if (_loadNum >= _minLoadNum) { print(">notifyListeners"); notifyListeners(); } } } @override void init() { model = getIt.get(); setContext(context); setIsDispose(false); } void showLoading(bool isNeedLoading) { if (isNeedLoading) { needLoadingRequestCount++; if (!isLoading) { isLoading = true; if (showLoadingFun != null) { showLoadingFun!.call(); } showLoadingFun?.call(); } } } void dismissLoading(bool isNeedLoading) { if (isNeedLoading) { needLoadingRequestCount–; if (needLoadingRequestCount == 0) { isLoading = false; if (dismissLoadingFun != null) { dismissLoadingFun!.call(); } dismissLoadingFun?.call(); } } } /// 發起網路請求,同時處理異常,loading void sendRequest(Future future, FutureOr onValue(T value), {Function(Exception e)? error, bool isNeedLoading = false}) { showLoading(isNeedLoading); future.then((t) { dismissLoading(isNeedLoading); onValue(t); }); if (isNeedCatchError) { future.catchError((e) { dismissLoading(isNeedLoading); print("====>error:$e"); if (error != null) { error(e); } }); } } @override void dispose() { super.dispose(); _isDispose = true; setIsDispose(_isDispose); } } @injectable class LoginViewModel extends BaseViewModel { @factoryMethod LoginViewModel(); String loginName = “”; String psw = “”; ///登入 void login() { if (loginName.isEmpty) { showToast(“登入賬號不可為空”); } else if (psw.isEmpty) { showToast(“登入密碼不可為空”); } else { sendRequest(model.login(loginName, psw), (value) { if (value.errorCode == 0) { value.data?.let((it) { UserInfoSp.getInstance().uid = it.id ?? 0; UserInfoSp.getInstance().token = it.token ?? “”; UserInfoSp.getInstance().userName = it.username ?? “”; }); pop(); push(MainPage()); } else { showToast(value.errorMsg!); } }, isNeedLoading: true); } } }
以上就是 直播app原始碼,跳轉站外連結或平臺內部跳轉頁面實現的相關程式碼,更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2855587/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 直播系統平臺搭建,點選連結跳轉到三方平臺或其他頁面
- react跳轉url,跳轉外鏈,新頁面開啟頁面React
- app直播原始碼,RecycleView頁面的點選跳轉設計APP原始碼View
- 直播平臺開發,實現點選跳轉外部連結時的跳轉步驟
- js頁面跳轉的問題(跳轉到父頁面、最外層頁面、本頁面)JS
- JavaScript頁面跳轉程式碼JavaScript
- vue頁面跳轉Vue
- Flutter頁面跳轉Flutter
- 點選連結跳轉到應用指定頁面
- 影片直播原始碼,uniapp頁面跳轉的幾種方法和區別原始碼APP
- Flutter:如何跳轉頁面?Flutter
- JavaScript 頁面跳轉效果JavaScript
- router跳轉page頁面
- 成品直播原始碼,html頁面點選按鈕實現頁面跳轉的兩種方法原始碼HTML
- uni-APP 新增頁面實現路由跳轉APP路由
- 直播帶貨原始碼,商品頁面跳轉顯示白底, 新增漸變動畫原始碼動畫
- 短視訊平臺開發,點選連結、圖片自動跳轉到新的頁面
- top.location.href(最外層的頁面跳轉)
- 頁面連結跳轉--指定協議,半協議,無協議協議
- JavaScript 阻止超連結跳轉JavaScript
- 超連結的跳轉位置
- 頁面跳轉的幾種方法
- PHP中實現頁面跳轉PHP
- php怎麼直接跳轉頁面PHP
- 短視訊直播原始碼,遊客模式下使用正常功能跳轉到登入頁面原始碼模式
- 【eslint 外掛開發】禁用 location 跳轉外部連結EsLint
- Android應用內外跳 — 跳轉到應用市場Android
- h5 喚起app或跳轉appStoreH5APP
- 404頁面自動跳轉到首頁
- 點選連結取消跳轉效果
- JavaScript 阻止超連結的跳轉JavaScript
- (一)Chrome書籤連結跳轉Chrome
- 網址連結跳轉外部安全提醒程式碼
- 頁面內跳轉到相應位置的3種方法
- Flutter頁面保活及保持頁面跳轉位置Flutter
- Android Jetpack - 使用 Navigation 管理頁面跳轉AndroidJetpackNavigation
- 日常問題 頁面跳轉 $_SESSION 失效Session
- php 跳轉頁面之前彈窗提示PHP