我正在做扑扑的应用程序。我想在应用程序中打开网站。因此,我已经使用url_launcher
插件打开了URL,但是没有用。不必在应用程序中显示网站。
这是我的代码:
class _MainPageState extends State<MainPage>
with SingleTickerProviderStateMixin {
TabController _tabController;
@override
void initState() {
_tabController = new TabController(length: 2, vsync: this);
super.initState();
}
void _launch(String url) async {
try {
if (await canLaunch(url)) {
await launch(url);
}
} catch (e) {
print(e);
}
}
Widget tab1() {
return Container();
}
Widget tab2() {
return InkWell(
onTap: () {
_launch("www.google.com");
},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
bottom: TabBar(
unselectedLabelColor: Colors.black,
labelColor: Colors.white,
tabs: [
new Tab(text: 'Tab 1'),
new Tab(text: 'Tab 2'),
],
controller: _tabController,
indicatorColor: Colors.white,
indicatorSize: TabBarIndicatorSize.tab,
),
bottomOpacity: 1,
),
body: TabBarView(
children: [tab1(), tab2()],
controller: _tabController,
),
);
}
}
有人知道如何解决此错误吗?
答案 0 :(得分:1)
您使用了错误的软件包
要在Flutter应用中打开任何网站,请使用webview_flutter
软件包
Click here to check details to use this package
答案 1 :(得分:1)
url_launcher 如果使用得当可以正常工作
_launchURL() async {
const url = "https://something.com";
if (await canLaunch(url)) {
await launch(
url,
forceWebView: false,
enableJavaScript: true,
headers: <String, String>{'my_header_key': 'my_header_value'},);
} else {
throw 'Could not launch ';
}
}
文档显示了何时以及为何使用 forceWebView 和 enableJavaScript。
但是请注意,Android 11(API 级别 30)会给您带来一些问题。 在这种情况下,canLaunch 返回 false。 为了使它工作,我必须在我的 AndroidManifest.xml 中添加以下内容:
<activity android:name="io.flutter.plugins.urllauncher.WebViewActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:exported="false"/>
仅此一项是行不通的,所以我进行了更多挖掘并发现了这一点: https://developer.android.com/training/basics/intents/package-visibility#all-apps
然后我也将以下内容添加到我的 AndroidManifest.xml 并为我解决了:
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
答案 2 :(得分:0)
您好,此文件中的所有代码都可以吗?
首先,文件开头缺少一些导入;)
例如,您需要添加
import 'package:url_launcher/url_launcher.dart';
您跑步
pub get
修改pubspec.yaml文件后?
答案 3 :(得分:0)
该网址应具有正确的方案:
http:,https :,例如http://flutter.dev-在默认浏览器中打开URL
https://pub.dev/packages/url_launcher#supported-url-schemes
Widget tab2() {
return InkWell(
onTap: () {
_launch("https://www.google.com/");
},
);
}