【问题标题】:flutter web view is not working with ios app颤动的网页视图不适用于 ios 应用程序
【发布时间】:2021-02-13 02:02:07
【问题描述】:

我创建了我的第一个 Flutter 模块,其中包含一个 Web 视图。 它在独立运行模块或运行 .ios/Runner 项目时工作正常 但是当我将此模块与我的 ios 应用程序集成并运行该应用程序时,Web 视图就消失了。

dart 文件代码:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:webview_flutter/webview_flutter.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Material App',
      theme: ThemeData.light(),
      home: Home(),
    );
  }
}

// ignore: must_be_immutable
class Home extends StatelessWidget {
  String _url = "https://www.google.com";
  final _key = UniqueKey();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
            title: Text("Web Viewwww"),
            leading: IconButton(
              icon: Icon(Icons.arrow_back),
              onPressed: () => SystemNavigator.pop(
                  animated: true) /*Navigator.pop(context, true)*/,
            )),
        body: Column(
          children: [
            Expanded(
                child: WebView(
                    key: _key,
                    javascriptMode: JavascriptMode.unrestricted,
                    initialUrl: _url))
          ],
        ));
  }
}

这是我使用的应用程序委托的代码:

lazy var flutterEngine = FlutterEngine()

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        flutterEngine.run()
        
        return true
    }

这是用于导航的 iOS 视图控制器的代码

let engin = (UIApplication.shared.delegate as! AppDelegate).flutterEngine
 let myflutterVC = FlutterViewController(engine: engin, nibName: nil, bundle: nil)
        myflutterVC.modalPresentationStyle = .fullScreen
        present(myflutterVC, animated: true, completion: nil)

第一个输出用于模块/运行器应用程序。
第二个输出用于我的 ios 应用程序。

【问题讨论】:

    标签: ios swift flutter flutter-dependencies


    【解决方案1】:
    iOS
    

    为了使插件正常工作,您需要向 ios/Runner/Info.plist 添加新密钥

    <key>NSAppTransportSecurity</key>
    
    <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSAllowsArbitraryLoadsInWebContent</key>
    <true/>
    

    【讨论】:

      【解决方案2】:

      如果你的 URL 有一些特殊字符,那么你需要像这样对 URL 进行编码,

       WebView(
            initialUrl: Uri.encodeFull(yourUrl),
            ...
       )

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-15
        • 2011-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-24
        相关资源
        最近更新 更多