大佬教程收集整理的这篇文章主要介绍了如何在带有动态 url 的 IOS 中使用 WebView?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个动态 HTML url ('https://...../tokens,headers etc./example.HTML')。我在 url 中放置了 cookie 设置。这是我的 webvIEw 类,它在 AndroID 上运行良好。但在 IOS 上,只有加载小部件处于活动状态。网络视图不起作用。控制台上没有错误或警告。我还将以下代码添加到 info.pList:
@H_673_4@<key>io.Flutter.embedded_vIEws_prevIEw</key><true/>
<key>NSAppTransportSecurity</key>
<Dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</Dict>
我的 webvIEw 小部件仍然无法正常工作。我尝试了许多 webvIEw 插件,但它们都不适用于我的问题。如果我使用任何其他网址,它就可以正常工作。一切都在颤振医生上更新。 Xcode 12.3 版。 这是使用inappwebvIEw插件的代码;
@H_673_4@class MyWebVIEw extends StatefulWidget {
final String title;
final String SELEctedUrl;
MyWebVIEw({
@required this.title,@required this.SELEctedUrl,});
@overrIDe
_MyWebVIEwState createState() => _MyWebVIEwState();
}
class _MyWebVIEwState extends State<MyWebVIEw> {
num position = 1;
String token;
String tenant;
String rolEID;
String path;
/*final Completer<WebVIEwController> _controller =
Completer<WebVIEwController>();
*/
final FlutterWebvIEwPlugin = new FlutterWebvIEwPlugin();
final Set<JavaScriptChAnnel> JsChAnnels = [
JavaScriptChAnnel(
name: 'Print',onmessageReceived: (JavaScriptmessage messagE) {
print(message.messagE);
}),].toSet();
@overrIDe
voID initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallBACk((_) async {
await _getTenant().then((v) {
setState(() {
this.tenant = v;
});
});
});
WidgetsBinding.instance.addPostFrameCallBACk((_) async {
await _getToken().then((v) {
setState(() {
this.token = v;
});
});
});
WidgetsBinding.instance.addPostFrameCallBACk((_) async {
await _getRolEID().then((v) {
setState(() {
this.rolEID = v;
});
});
});
WidgetsBinding.instance.addPostFrameCallBACk((_) async {
await _getDefaultPath().then((v) {
setState(() {
this.path = v;
});
});
});
}
@overrIDe
Widget build(BuildContext context) {
print('url ->>> ' + Widget.SELEctedUrl);
return new MaterialApp(
routes: {
"/": (_) => new WebvIEwScaffold(
headers: {
'tenant': this.tenant,'ORA_BIPS_NQID': this.token,'roles': this.rolEID
},url: Widget.SELEctedUrl,JavaScriptChAnnels: JsChAnnels,appbar: new Appbar(
leading: Iconbutton(
icon: Icon(Icons.arrow_BACk,color: colors.whitE),onpressed: () => Navigator.of(context).pop(),),BACkgroundcolor: colors.grey,title: new Text("Vispeahen"),withZoom: true,withlocalstorage: true,hIDden: true,initialChild: Container(
color: colors.white,child: const center(
child: CircularProgressInDicator(),},);
}
}
这是 Flutter 的 WebVIEw 插件;
@H_673_4@class MyWebVIEw extends StatefulWidget {
final String title;
final String SELEctedUrl;
MyWebVIEw({
@required this.title,});
@overrIDe
_MyWebVIEwState createState() => _MyWebVIEwState();
}
class _MyWebVIEwState extends State<MyWebVIEw> {
num position = 1;
final Completer<WebVIEwController> _controller =
Completer<WebVIEwController>();
@overrIDe
voID initState() {
super.initState();
WebVIEw.platform = SurfaceAndroIDWebVIEw();
}
@overrIDe
Widget build(BuildContext context) {
print('url ->>> ' + Widget.SELEctedUrl);
return Scaffold(
appbar: Appbar(
BACkgroundcolor: colors.grey,title: Text(Widget.titlE),body: IndexedStack(
index: position,children: <Widget>[
WebVIEw(
initialUrl: Widget.SELEctedUrl,onPageStarted: (value) {
setState(() {
position = 1;
});
},onPageFinished: (value) {
setState(() {
position = 0;
});
},JavaScriptMode: JavaScriptMode.unreStricted,onWebVIEwCreated: (WebVIEwController webVIEwController) {
_controller.complete(webVIEwController);
},navigationDelegate: (Navigationrequest nav) {
print(
'SAW REQ TO LOAD: ${nav.url}\nIN MAIN FRAME? ${nav.isForMainFramE}');
return NavigationDecision.navigate;
}),Container(
child: Center(child: CircularProgressInDicator()),],));
}
}
它给了我同样的结果。
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的如何在带有动态 url 的 IOS 中使用 WebView?全部内容,希望文章能够帮你解决如何在带有动态 url 的 IOS 中使用 WebView?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。