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 urlWert 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.yamlusw.) 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 cleanwenn das importProblem 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 UrlLauncherist nicht mehr verwendbar.