controller.dart 1.4 KB

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