我已经在波动中实现了webView,但是它并没有打开我在服务器上做错的php网站。
我是新手,并尝试使用webview将我的网站网页集成到我的应用程序中,但是没有运气。
Widget build(BuildContext context) {
// TODO: implement build
return WebviewScaffold(
appBar: AppBar(iconTheme:IconThemeData(color: Colors.white),title: Text("Intake Form",style:new TextStyle(color: Colors.white,fontWeight: FontWeight.bold)),backgroundColor:Colors.indigoAccent,automaticallyImplyLeading: false),
url: url,
//url: "http://61.246.39.79:8080/",
withJavascript: true,
supportMultipleWindows: true,
withLocalStorage: true,
allowFileURLs: true,
enableAppScheme: true,
appCacheEnabled: true,
hidden: false,
scrollBar: true,
geolocationEnabled: false,
clearCookies: true,
// usesCleartextTraffic="true"
);
}
我希望输出为运行的Webview,但会引发错误。
答案 0 :(得分:23)
在Flutter项目的主目录中,有三个主文件夹:
- lib = your Dart code
- ios = generated structure for iOS platform
- android = generated structure for Android platform
我们对android
目录感兴趣。
当您打开它时,您将看到“典型的Android应用程序结构”。
所以您必须做两件事:
res
转到目录:
my_flutter_project/android/app/src/main/res/
创建xml
目录(在res
中!)
在xml
内添加名称为network_security_config.xml
和内容:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config>
network_security_config.xml
应该位于路径中:
my_flutter_project/android/app/src/main/res/xml/network_security_config.xml
在这里您可以找到有关此文件的更多信息:
https://developer.android.com/training/articles/security-config
转到:
flutter_project/android/app/src/main/AndroidManifest.xml
AndroidManifest.xml
是XML文件,其结构为:
<manifest>
<application>
<activity>
...
</activity>
<meta-data >
</application>
</manifest>
因此,对于<application>
属性,您必须添加1行:
android:networkSecurityConfig="@xml/network_security_config"
application
开头标记内):<application
SOMEWHERE HERE IS OK
>
不作为标签:
<application> <--- opening tag
HERE IS WRONG!!!!
<application/> <--- closing tag
答案 1 :(得分:1)
在您的AndroidManifest文件中,将usingCleartextTraffic属性设置为true,如下所示。
<application
....
android:usesCleartextTraffic="true"
....>
答案 2 :(得分:0)
打开android清单文件(android / app / src / main / AndroidManifest.xml)并添加
android:usesCleartextTraffic =“ true”
<application
android:name="io.flutter.app.FlutterApplication"
android:label="tangerine_ui"
android:icon="@mipmap/ic_launcher"
android:usesCleartextTraffic="true">
答案 3 :(得分:0)
在AndroidManifest.xml中,将[<input
type="text"
autocomplete="off"
class="form-control"
name="Personal_Weapons_Price"
id="Personal_Weapons_Price"
required
pattern="^(\d+|NA|na)$"
/>
]添加为
android:usesCleartextTraffic="true"
它无法在android 9中运行
答案 4 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
答案 5 :(得分:0)
对于ios修改info.plist ./ios/Runner/info.plist
添加以下内容:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
并在再次启动应用程序之前运行 flutter clean