Как открыть веб-браузер (URL) из моего кода Flutter?

Я создаю приложение Flutter и хочу открыть URL-адрес в веб-браузере или окне браузера (в ответ на нажатие кнопки). Как я могу это сделать?

Ответ 1

Теперь это реализовано как плагин

https://pub.dartlang.org/packages/url_launcher

Пример:

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';
  }
}

Специальные символы:

Если значение url содержит пробелы или другие значения, которые теперь разрешены в URL, используйте

Uri.encodeFull(urlString) или Uri.encodeComponent(urlString) и вместо этого передайте полученное значение.

Ответ 2

[ПРИМЕЧАНИЕ: UrlLauncher больше не существует. См. Принятый ответ для решения.]

Вы можете использовать UrlLauncher, чтобы сделать что-то вроде этого:

new FlatButton(
  textColor: style.mainTheme.accentColor,
  child: new Text(signInLabel, style: style.largeText),
  onPressed: () {
    UrlLauncher.launch('http://www.webpage.com');
  }
);

Ответ 3

Если вы хотите использовать url_launcher, чем, пожалуйста, используйте его в этой форме

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  url_launcher: ^5.0.2
  flutter:
    sdk: flutter

Этот ответ также для абсолютных новичков: они думают позади флаттера SDK. Нет, это был провал. Пакеты были отдельно оплачиваемыми, а не в трепетании СДК. Это были вторичные пакеты (одиночные небольшие помощники фреймворка).

Ответ 4

После некоторого поиска эту проблему можно решить с помощью инструкций, перечисленных здесь: https://groups.google.com/forum/#!topic/flutter-dev/J3ujgdOuG98

Вышеупомянутый UrlLauncher больше не используется.

Ответ 6

Для флаттера:

Как описано выше Гюнтером Цохбауэром

Для Flutter Web:

import 'dart:html' as html;

Тогда используйте:

html.window.open(url, name);

Убедитесь, что вы запустите flutter clean если import не разрешается.