controller.dart 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import 'package:electronic_assistant/base/base_controller.dart';
  2. import 'package:get/get.dart';
  3. import 'package:webview_flutter/webview_flutter.dart';
  4. class BrowserController extends BaseController {
  5. String url = (Get.arguments is String) ? (Get.arguments as String) : '';
  6. final WebViewController webViewController = WebViewController();
  7. final title = ''.obs;
  8. @override
  9. void onInit() {
  10. super.onInit();
  11. _initWebSetting();
  12. }
  13. @override
  14. void onReady() {
  15. super.onReady();
  16. _loadUrl();
  17. }
  18. void _initWebSetting() {
  19. webViewController.setJavaScriptMode(JavaScriptMode.unrestricted);
  20. webViewController.setNavigationDelegate(
  21. NavigationDelegate(
  22. onPageFinished: (String url) {
  23. _getTitle();
  24. },
  25. ),
  26. );
  27. }
  28. void _loadUrl() {
  29. if (url.isEmpty) {
  30. return;
  31. }
  32. webViewController.loadRequest(Uri.parse(url));
  33. }
  34. Future<bool> handleBack() async {
  35. if (await webViewController.canGoBack()) {
  36. webViewController.goBack();
  37. return false;
  38. }
  39. return true;
  40. }
  41. void _getTitle() async {
  42. await Future.delayed(const Duration(milliseconds: 500));
  43. webViewController.getTitle().then((title) {
  44. if (title != null) {
  45. this.title.value = title;
  46. }
  47. });
  48. }
  49. }