| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import 'package:get/get.dart';
- import 'package:injectable/injectable.dart';
- import 'package:webview_flutter/webview_flutter.dart';
- import '../../base/base_controller.dart';
- import '../../resource/colors.gen.dart';
- @injectable
- class BrowserController extends BaseController {
- String url = (Get.arguments is String) ? (Get.arguments as String) : '';
- final WebViewController webViewController = WebViewController();
- final title = ''.obs;
- @override
- void onInit() {
- super.onInit();
- _initWebSetting();
- }
- @override
- void onReady() {
- super.onReady();
- _loadUrl();
- }
- void _initWebSetting() {
- webViewController.setJavaScriptMode(JavaScriptMode.unrestricted);
- webViewController.setBackgroundColor(ColorName.white);
- webViewController.setNavigationDelegate(
- NavigationDelegate(
- onPageFinished: (String url) {
- _getTitle();
- },
- ),
- );
- }
- void _loadUrl() {
- if (url.isEmpty) {
- return;
- }
- webViewController.loadRequest(Uri.parse(url));
- }
- Future<bool> handleBack() async {
- if (await webViewController.canGoBack()) {
- webViewController.goBack();
- return false;
- }
- return true;
- }
- void _getTitle() async {
- await Future.delayed(const Duration(milliseconds: 500));
- webViewController.getTitle().then((title) {
- if (title != null) {
- this.title.value = title;
- }
- });
- }
- }
|