Ich erstelle eine Flutter-App und möchte eine URL in einem Webbrowser oder einem Browserfenster öffnen (als Reaktion auf einen Tastendruck). Wie kann ich das machen?
Antworten:
TL; DR
Dies ist jetzt als Plugin implementiert
const url = "https://flutter.io";
if (await canLaunch(url))
await launch(url);
else
// can't launch url, there is some error
throw "Could not launch $url";
Vollständiges Beispiel:
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
void main() {
runApp(new Scaffold(
body: new Center(
child: new RaisedButton(
onPressed: _launchURL,
child: new Text('Show Flutter homepage'),
),
),
));
}
_launchURL() async {
const url = 'https://flutter.io';
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
In pubspec.yaml
dependencies:
url_launcher: ^5.4.2
Wenn der url
Wert Leerzeichen oder andere Werte enthält, die jetzt in URLs zulässig sind, verwenden Sie
Uri.encodeFull(urlString)
oder Uri.encodeComponent(urlString)
und übergeben Sie stattdessen den resultierenden Wert.
lib
, pubspec.yaml
usw.) oder umgekehrt die plattformspezifischen Ordner in Ihrem alten Projekt aktualisieren für diese Arbeit.
url_launcher: ^3.0.2
, die pubspec.yaml
android/
oder ios/
veraltet. Wenn es in einer neuen App funktioniert, vergleichen Sie die Dateien und aktualisieren Sie sie in Ihrem Projekt. Sie können diese Verzeichnisse auch löschen und flutter create .
manuelle Änderungen ausführen und anschließend erneut anwenden.
Für Flatter:
Wie oben von Günter Zöchbauer beschrieben
Für Flutter Web:
import 'dart:html' as html;
Dann benutze:
html.window.open(url, name);
Stellen Sie sicher, dass Sie ausgeführt werden, flutter clean
wenn das import
Problem nicht behoben werden kann.
Wenn Sie url_launcher verwenden möchten, verwenden Sie es bitte in diesem Formular
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
url_launcher: ^5.0.2
flutter:
sdk: flutter
Diese Antwort gilt auch für absolute Anfänger: Sie denken hinter dem Flattern sdk. Nein, das war ein Misserfolg. Die Pakete waren Extras und nicht im Flattern Sdk. Dies waren sekundäre Pakete (einzelne kleine Framework-Helfer).
Verwenden des URL Launcher-Plugins url_launcher
Um eine Webseite zu starten, müssen wir eine asynchrone Funktion sein und Folgendes tun:
launchURL(String url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
Wenn wir möchten, dass sowohl iOS als auch Android die Webseite in der Anwendung (als WebView) öffnen, fügen Sie Folgendes hinzu forceWebView: true
:
launchURL(String url) async {
if (await canLaunch(url)) {
await launch(url, forceWebView: true);
} else {
throw 'Could not launch $url';
}
}
Und nenne es so
onTap: () {
const url = 'https://google.com';
launchURL(url);
}
Nach einiger Suche kann dieses Problem über die hier aufgeführten Anweisungen behoben werden: https://groups.google.com/forum/#!topic/flutter-dev/J3ujgdOuG98
Das Obige UrlLauncher
ist nicht mehr verwendbar.