提交 067a5427 编写于 作者: F fancy

主页门户 再次点击刷新页面

上级 0df1ce36
......@@ -25,9 +25,12 @@ class PortalController extends GetxController implements JsNavigationInterface {
// webview控件的控制器
final GlobalKey webViewKey = GlobalKey();
InAppWebViewController? webviewController;
late PullToRefreshController pullToRefreshController;
// webview 通用方法
final webviewHelper = WebviewHelper();
String? currentPortalId;
Map<String, dynamic>? initMap;
// 安装转化js
......@@ -40,6 +43,20 @@ class PortalController extends GetxController implements JsNavigationInterface {
/// 在 widget 内存中分配后立即调用。
@override
void onInit() {
pullToRefreshController = PullToRefreshController(
options: PullToRefreshOptions(
color: Colors.blue,
),
onRefresh: () async {
OLogger.d('开始刷新。。。。。');
if (GetPlatform.isAndroid) {
webviewController?.reload();
} else if (GetPlatform.isIOS) {
webviewController?.loadUrl(
urlRequest: URLRequest(url: await webviewController?.getUrl()));
}
},
);
super.onInit();
}
......@@ -54,6 +71,7 @@ class PortalController extends GetxController implements JsNavigationInterface {
String? portalParameters = initMap?["portalParameters"];
state.hiddenAppBar = initMap?['hiddenAppBar'] ?? true;
if (id.isNotEmpty) {
currentPortalId = id;
_initPortalUrl(id, pageId: pageId, portalParameters: portalParameters);
} else {
OLogger.e('没有传入门户 id!!!');
......@@ -70,6 +88,7 @@ class PortalController extends GetxController implements JsNavigationInterface {
String? portalParameters = map["portalParameters"];
OLogger.i("门户id: $id pageId:$pageId portalParameters: $portalParameters");
if (id.isNotEmpty) {
currentPortalId = id;
_initPortalUrl(id, pageId: pageId, portalParameters: portalParameters);
} else {
Loading.showError('args_error'.tr);
......@@ -87,8 +106,12 @@ class PortalController extends GetxController implements JsNavigationInterface {
OLogger.d('流程工作文档 关闭后刷新portal页面。。。。。');
});
_eventBus.on(EventBus.refreshPortalMsg, _eventId, (arg) {
_refreshPage();
OLogger.d('刷新门户, $arg');
if (arg != null && arg is String && arg == currentPortalId) {
_startPullToRefresh();
} else {
_refreshPage();
}
});
super.onReady();
......@@ -127,6 +150,11 @@ class PortalController extends GetxController implements JsNavigationInterface {
state.title = title;
}
/// 显示刷新动画并 刷新页面
void _startPullToRefresh() {
pullToRefreshController.beginRefreshing();
_refreshPage();
}
/// 刷新当前页面
void _refreshPage() {
isInstallJsName = false;
......
......@@ -73,6 +73,7 @@ class PortalPage extends GetView<PortalController> {
return InAppWebView(
key: controller.webViewKey,
initialUrlRequest: URLRequest(url: Uri.parse(controller.state.url)),
pullToRefreshController: controller.pullToRefreshController,
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
useShouldOverrideUrlLoading: true,
......@@ -94,6 +95,19 @@ class PortalPage extends GetView<PortalController> {
onWebViewCreated: (c) {
controller.setupWebviewJsHandler(c);
},
onLoadStop: (c, url) async {
controller.pullToRefreshController.endRefreshing();
OLogger.d("=====> onLoadStop url: $url");
},
onScrollChanged: (c, x, y) {
OLogger.d("=====> onScrollChanged x: $x y: $y");
},
onLoadError: (c, url, code, message) {
OLogger.d("=====> onLoadError url: $url code: $code message: $message");
},
onOverScrolled: (controller, x, y, clampedX, clampedY) {
OLogger.d("=====> onOverScrolled x: $x y: $y clampedX: $clampedX clampedY: $clampedY");
},
// onCreateWindow: (c, createWindowRequest) async {
// OLogger.d("创建新窗口,,,,${createWindowRequest.request.url}");
// },
......@@ -105,6 +119,9 @@ class PortalPage extends GetView<PortalController> {
},
onProgressChanged: (c, p) {
controller.progressChanged(c, p);
if (p == 100) {
controller.pullToRefreshController.endRefreshing();
}
},
// h5下载文件
onDownloadStartRequest: (c, request) async {
......
......@@ -19,6 +19,9 @@ class HomeController extends GetxController with WidgetsBindingObserver {
var simpleMode = false;
var pageController = PageController();
// 门户 id 缓存
final Map<AppIndexModule, String> portalCache = {};
/// 个人语言环境
void _personLanguage() {
......@@ -131,8 +134,11 @@ class HomeController extends GetxController with WidgetsBindingObserver {
/// 点击底部菜单
void handleNavBarClick(int index) {
if (state.currentIndex == index) { // 重复点击 发送刷新事件消息
eventBus.emit(EventBus.refreshPortalMsg, state.homeTabList[index]);
if (state.currentIndex == index) { // 重复点击 如果是门户 发送刷新事件消息
final portalId = portalCache[state.homeTabList[index]] ;
if (portalId != null && portalId.isNotEmpty) {
eventBus.emit(EventBus.refreshPortalMsg, portalId);
}
return;
}
state.currentIndex = index;
......
......@@ -133,6 +133,7 @@ class HomePage extends GetView<HomeController> {
"portalParameters": portalParameters
}),
tag: 'app_tag_$portalId');
controller.portalCache[AppIndexModule.app] = portalId;
return PortalPage(tag: 'app_tag_$portalId');
} else {
AppsBinding().dependencies();
......@@ -158,6 +159,7 @@ class HomePage extends GetView<HomeController> {
"portalParameters": portalParameters
}),
tag: 'contact_tag_$portalId');
controller.portalCache[AppIndexModule.contact] = portalId;
return PortalPage(tag: 'contact_tag_$portalId');
} else {
ContactBinding().dependencies();
......@@ -199,6 +201,7 @@ class HomePage extends GetView<HomeController> {
"title": indexPortalAppBarTitle
}),
tag: 'index_tag_$portalId');
controller.portalCache[AppIndexModule.home] = portalId;
return PortalPage(tag: 'index_tag_$portalId');
} else {
DefaultIndexBinding().dependencies();
......@@ -225,6 +228,7 @@ class HomePage extends GetView<HomeController> {
"portalParameters": portalParameters
}),
tag: 'im_tag_$portalId');
controller.portalCache[AppIndexModule.im] = portalId;
return PortalPage(tag: 'im_tag_$portalId');
} else {
ImBinding().dependencies();
......@@ -250,6 +254,7 @@ class HomePage extends GetView<HomeController> {
"portalParameters": portalParameters
}),
tag: 'settings_tag_$portalId');
controller.portalCache[AppIndexModule.settings] = portalId;
return PortalPage(tag: 'settings_tag_$portalId');
} else {
SettingsBinding().dependencies();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册