Flutter webview

引入flutter_webview_plugin插件

pubspec.yaml文件中引入:

dependencies:
   flutter_webview_plugin: ^0.3.8

权限配置

Flutter 本身并未集成webview,所以当需要使用webview 的时候,使用flutter_webview_plugin插件,也就是使用的原生webview组件

flutter_webview_plugin 在使用过程中会iOS出现无法加载HTTP请求的情况, 但是Flutter 却可以加载HTTP请求。这就与两个的框架有关了,Flutter是独立于UIKit框架的。 解决方案:

在iOS 的info.plist中添加对HTTP的信任。

NSAppTransportSecurity
    
        NSAllowsArbitraryLoads
        
    

在Android中

  1. 在D:\work_area\github\01-07-gxj-nss\android\app\src\main\res中添加xml文件夹
  2. xml文件夹下面创建network_security_config.xml,文件内容如下
     
       
           
               
           
       
     
  3. 修改D:\work_area\github\01-07-gxj-nss\android\app\src\main\AndroidManifest.xml文件
     

作用及使用

在app中打开外部链接地址

  1. 参考网址:flutter_webview_plugin
  2. 使用方式1:

    import 'package:flutter/material.dart';
    import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
    
    void main() => runApp(MyApp());
    
     class MyApp extends StatelessWidget {
       // 直接在routes中使用
       final routes = {
         // 首页nss社区
         "index_nss_community":(_) => WebviewScaffold(
           url: "http://www.cnminer.cn/",
           appBar: AppBar(
             title:Text('nss社区'),
           ),
           // 允许网页缩放
           withZoom: true,
           // 允许LocalStorage
           withLocalStorage: true,
           // 允许执行js代码  
           withJavascript: true, 
         ),
       };
    
       @override
       Widget build(BuildContext context) {
    
       }
     }
  3. 使用方式2:

    import 'package:flutter/material.dart';
    import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
    
    void main() => runApp(MyApp());
    
     class MyApp extends StatelessWidget {
       // 定义路由
       final routes = {
         "index_new_direct":(context, {arguments}) => WebViewPage(arguments:arguments),
       };
    
       @override
       Widget build(BuildContext context) {
    
       }
     }
    // 页面中使用
    import 'package:flutter/material.dart';
    import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
    import 'package:flutter/services.dart';
    import 'package:orientation/orientation.dart';
    
    class WebViewPage extends StatefulWidget {
     final Map arguments;
     WebViewPage({Key key, this.arguments}) : super(key: key);
     @override
     _WebViewPageState createState() => _WebViewPageState();
    }
    
    class _WebViewPageState extends State {
     // 当前页面索引
     int currentIndex = 0;
     @override
     initState() {
       super.initState();
       currentIndex = widget.arguments["currentIndex"];
       OrientationPlugin.forceOrientation(DeviceOrientation.landscapeRight);
     }
    
     @override
     void dispose() {
       super.dispose();
       //返回时 设置回竖屏
       OrientationPlugin.forceOrientation(DeviceOrientation.portraitUp);
     }
    
     @override
     Widget build(BuildContext context) {
       // 跳转代码
       return WebviewScaffold(
         url: "https://www.feixiaohao.com/currencies/tickets/",
         appBar: AppBar(
           title: Text('nss新动向'),
         ),
         // 允许网页缩放
         withZoom: true,
         // 允许LocalStorage
         withLocalStorage: true,
         // 允许执行js代码
         withJavascript: true,
       );
     }
    }

欢迎加群讨论更多flutter相关问题(7天有效)如果失效,可加个人微信拉群

 

你可能感兴趣的:(flutter)