Files
DMZJ_F/lib/modules/common/webview/webview_controller.dart
2026-03-07 17:24:59 +08:00

59 lines
1.8 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'package:flutter/material.dart';
import 'package:flutter_dmzj/app/app_color.dart';
import 'package:flutter_dmzj/app/controller/base_controller.dart';
import 'package:flutter_dmzj/app/log.dart';
import 'package:flutter_dmzj/services/user_service.dart';
import 'package:get/get.dart';
import 'package:webview_flutter/webview_flutter.dart';
class WebViewPageController extends BaseController {
final String url;
WebViewPageController(this.url);
final WebViewController webViewController = WebViewController();
var title = "加载中".obs;
@override
void onInit() {
initWebView();
super.onInit();
}
void initWebView() async {
webViewController.setJavaScriptMode(JavaScriptMode.unrestricted);
webViewController.setBackgroundColor(
Get.isDarkMode ? Colors.black : AppColor.backgroundColor);
webViewController.setNavigationDelegate(
NavigationDelegate(
onPageStarted: (String url) {
pageLoadding.value = true;
},
onPageFinished: (String url) async {
pageLoadding.value = false;
title.value = (await webViewController.getTitle()) ?? "";
},
onNavigationRequest: (NavigationRequest request) {
var uri = Uri.parse(request.url);
Log.d(request.url);
if (uri.scheme == "https" || uri.scheme == "http") {
return NavigationDecision.navigate;
}
return NavigationDecision.prevent;
},
),
);
webViewController.loadRequest(Uri.parse(url), headers: {
"Cookie": UserService.instance.userProfile.value?.cookieVal ?? "",
});
/// TODO 无法加载Mixed Content
/// 19年的问题了Flutter还没解决...
/// https://github.com/flutter/flutter/issues/43595
}
void refreshWeb() {
webViewController.reload();
}
}