我正在尝试在Flutter应用程序上使用WebView()。编写代码后,没有任何错误,但是,在模拟器上运行调试模式时,该页面为空白。 AppBar在那里,文本也在上面,但是主体是空白屏幕。
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class Audio extends StatefulWidget {
@override
_AudioState createState() => _AudioState();
}
class _AudioState extends State<Audio> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Audio"),
),
body: WebView(
key: UniqueKey(),
initialUrl: "http://google.com",
javascriptMode: JavascriptMode.unrestricted
),
);
}
}
答案 0 :(得分:0)
这几乎是一种有意的行为。您提供的 initialUrl
似乎是不安全的 HTTP 连接。
文档“Insecure HTTP connections are disabled by default on iOS and Android”解释了这一切:
<块引用>从 Android API 28 开始 和iOS 9, 这些平台默认禁用不安全的 HTTP 连接。
通过此更改,Flutter 还禁用了移动设备上的不安全连接 平台。其他平台(桌面、网络等)不受影响。
您可以通过遵循特定于平台的 定义域特定网络策略的指南。见 有关详细信息,请参见下方的迁移指南。
很像平台,应用程序仍然可以不安全地打开 套接字连接。 Flutter 不会在套接字上强制执行任何策略 等级;您将负责保护连接。
以下是示例场景:
场景 1: 使用“http://google.com”
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
void main() {
runApp(Audio());
}
class Audio extends StatefulWidget {
@override
_AudioState createState() => _AudioState();
}
class _AudioState extends State<Audio> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Audio"),
),
body: WebView(
key: UniqueKey(),
initialUrl: "http://google.com",
javascriptMode: JavascriptMode.unrestricted),
),
);
}
}
场景 2: 使用“google.com”
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
void main() {
runApp(Audio());
}
class Audio extends StatefulWidget {
@override
_AudioState createState() => _AudioState();
}
class _AudioState extends State<Audio> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Audio"),
),
body: WebView(
key: UniqueKey(),
initialUrl: "google.com",
javascriptMode: JavascriptMode.unrestricted),
),
);
}
}
场景 3: 使用“https://www.google.com/”
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
void main() {
runApp(Audio());
}
class Audio extends StatefulWidget {
@override
_AudioState createState() => _AudioState();
}
class _AudioState extends State<Audio> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Audio"),
),
body: WebView(
key: UniqueKey(),
initialUrl: "https://www.google.com/",
javascriptMode: JavascriptMode.unrestricted),
),
);
}
}