web_page.dart 5.17 KB
import 'dart:async';

import 'package:device_info/device_info.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
// import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:webview_flutter/webview_flutter.dart';

import 'dart:async';
import 'dart:convert';
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/widgets/app_bar.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:webview_flutter/webview_flutter.dart';

// import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:url_launcher/url_launcher.dart';
import 'dart:collection';

// Import for Android features.
import 'package:webview_flutter_android/webview_flutter_android.dart';
// Import for iOS features.
import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart';
// import 'package:open_file/open_file.dart';
// import 'package:flutter_downloader/flutter_downloader.dart';



class WebPage extends StatefulWidget {
  final String title;
  final String url;
  final bool need;

  const WebPage({Key key, this.title, this.url, this.need = false})
      : super(key: key);
  @override
  _WebPageState createState() => _WebPageState();
}

class _WebPageState extends State<WebPage> {
  WebViewController controller;

  @override
  void initState() {
    super.initState();

    // #docregion webview_controller
    controller = WebViewController()
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      ..setBackgroundColor(const Color(0x00000000))
      ..setNavigationDelegate(
        NavigationDelegate(
          onProgress: (int progress) {
            // Update loading bar.
          },
          onPageStarted: (String url) {},
          onPageFinished: (String url) {},
          onWebResourceError: (WebResourceError error) {},
          onNavigationRequest: (NavigationRequest request) {
            if (request.url.startsWith('https://www.youtube.com/')) {
              return NavigationDecision.prevent;
            }
            return NavigationDecision.navigate;
          },
        ),
      )
      ..loadRequest(Uri.parse('http://colorcun.com/privacy2.html'));
    // #enddocregion webview_controller
  }

  @override
  void dispose() {
    if (widget.need) {
      Utils.changeStatusColor(color: MyColours.color_199095);
    }

    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: SystemAppBar(widget.title, onTap: () {
        if (widget.need) {
          Utils.changeStatusColor(color: MyColours.color_199095);
        }
        Navigator.of(context).pop();
      }),
      body: WebViewWidget(controller: controller),
    );
  }
}

// class WebPage extends StatelessWidget {
//   final String title;
//   final String url;
//   final bool need;

//   const WebPage({Key key, this.title, this.url, this.need = false})
//       : super(key: key);
//   @override
//   Widget build(BuildContext context) {
//     final Completer<WebViewController> _controller =
//         Completer<WebViewController>();
//     return Scaffold(
//       appBar: SystemAppBar(title, onTap: () {
//         if (need) {
//           Utils.changeStatusColor(color: MyColours.color_199095);
//         }
//         Navigator.of(context).pop();
//       }),
//       body: WillPopScope(
//           onWillPop: () async {
//             if (need) {
//               Utils.changeStatusColor(color: MyColours.color_199095);
//             }
//             return true;
//           },
//           child: WebView(
//             initialUrl: "http://colorcun.com/privacy1.html",
//             javascriptMode: JavascriptMode.unrestricted,
//             onWebViewCreated: (WebViewController webViewController) {
//               // Loading.showLoading(context);
//               _controller.complete(webViewController);
//             },
//             javascriptChannels: <JavascriptChannel>[
//               _toasterJavascriptChannel(context),
//             ].toSet(),
//             navigationDelegate: (NavigationRequest request) {
//               if (request.url.startsWith('https://www.youtube.com/')) {
//                 return NavigationDecision.prevent;
//               }
//               return NavigationDecision.navigate;
//             },
//             onPageStarted: (String url) {},
//             onPageFinished: (String url) {
//               // Loading.hideLoading(context);
//             },
//             gestureNavigationEnabled: true,
//           )),
//     );
//   }

//   JavascriptChannel _toasterJavascriptChannel(BuildContext context) {
//     return JavascriptChannel(
//         name: 'Toaster',
//         onMessageReceived: (JavascriptMessage message) {
//           Scaffold.of(context).showSnackBar(
//             SnackBar(content: Text(message.message)),
//           );
//         });
//   }
// }