Как создать гиперссылку в виджет трепыхаться?

Я хочу создать гиперссылку на дисплей в моем трепыхаться приложение.

Гипер-ссылки должны быть встроены в "текст" или аналогичном текстовом виды как:

Последняя книга, которую купила в <а href=&#39;#&#39;>этот</а>

Любой намек на это?

Просто оберните чернильницей вокруг текстовый виджет и поставить UrlLauncher (из библиотеки) к атрибуту предприятий. Установите UrlLauncher как пакет трепыхаться, прежде чем использовать его ниже.

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:url_launcher/url_launcher.dart';

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text('UrlLauchner'),
        ),
        body: new Center(
          child: new InkWell(
              child: new Text('Open Browser'),
              onTap: () => launch('https://docs.flutter.io/flutter/services/UrlLauncher-class.html')
          ),
        ),
      ),
    );
  }
}

Вы можете поставить стиль для текстового виджета, чтобы сделать его похожим на ссылку.

<Н2>обновление</Н2>

После изучения вопроса я нашел другое решение для реализации 'в линию' ссылки, которые вы просили. Вы можете использовать виджет richtext с с приложенными TextSpans.

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:url_launcher/url_launcher.dart';

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text('UrlLauchner'),
        ),
        body: new Center(
          child: new RichText(
            text: new TextSpan(
              children: [
                new TextSpan(
                  text: 'This is no Link, ',
                  style: new TextStyle(color: Colors.black),
                ),
                new TextSpan(
                  text: 'but this is',
                  style: new TextStyle(color: Colors.blue),
                  recognizer: new TapGestureRecognizer()
                    ..onTap = () { launch('https://docs.flutter.io/flutter/services/UrlLauncher-class.html');
                  },
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

Таким образом, вы действительно можете выделить одно слово и сделать гиперссылку из него ;)

Комментарии (6)

Трепыхаться не't имеют встроенную поддержку гиперссылки, но вы можете поддельные его самостоятельно. Там's в качестве примера в Галерея'с ящиком.дротик.

Комментарии (5)

Вы можете обернуть ваш "текст" в GestureDetector и ручки нажмите в ONTAP с()`.

GestureDetector(
  child: Text("Click here", style: TextStyle(decoration: TextDecoration.underline, color: Colors.blue)),
  onTap: () {
    // do what you need to do when "Click here" gets clicked
  }
)

Комментарии (3)

Если вы хотите сделать его еще более как ссылка, вы можете добавить подчеркивание:

new Text("Hello Flutter!", style: new TextStyle(color: Colors.blue, decoration: TextDecoration.underline),)

и результат:

Комментарии (0)

Вы можете использовать flutter_linkify пакет <БР> https://pub.dev/packages/flutter_linkify <БР> Просто хочу предоставить другой вариант. <БР> Пакет будет разделить текст и выделите HTTP или https автоматически <БР> Объединить url_launcher плагина вы можете запустить URL-адрес <БР> Вы можете посмотрите пример ниже: <БР>

полный код ниже <БР>

import 'package:flutter/material.dart';
import 'package:flutter_linkify/flutter_linkify.dart';
import 'dart:async';

import 'package:url_launcher/url_launcher.dart';

void main() => runApp(new LinkifyExample());

class LinkifyExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'flutter_linkify example',
      home: Scaffold(
        appBar: AppBar(
          title: Text('flutter_linkify example'),
        ),
        body: Center(
          child: Linkify(
            onOpen: _onOpen,
            text: "Made by https://cretezy.com \n\nMail: example@gmail.com \n\n  this is test http://pub.dev/ ",
          ),
        ),
      ),
    );
  }

  Future _onOpen(LinkableElement link) async {
    if (await canLaunch(link.url)) {
      await launch(link.url);
    } else {
      throw 'Could not launch $link';
    }
  }
}
Комментарии (0)

Альтернативная (или нет) способ ставить кликабельные ссылки в вашем приложении (для меня он просто работал, что путь):

1 - добавить пакет url_launcher в pubspec.файл YAML

(пакет версии 5.0 не't работа для меня, поэтому я'м с помощью 4.2.0+3).

dependencies:
  flutter:
    sdk: flutter
  url_launcher: ^4.2.0+3

2 - импорт и использовать, как показано ниже.

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

void main() {
  runApp(MaterialApp(
    title: 'Navigation Basics',
    home: MyUrl(),
  ));
}

class MyUrl extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Url Launcher'),
      ),
      body: Center(
        child: FlatButton(
          onPressed: _launchURL,
          child: Text('Launch Google!',
              style: TextStyle(fontSize: 17.0)),
        ),
      ),
    );
  }

  _launchURL() async {
    const url = 'https://google.com.br';
    if (await canLaunch(url)) {
      await launch(url);
    } else {
      throw 'Could not launch $url';
    }
  }
}
Комментарии (1)

Можно использовать пакеты, как ссылка,Link_Text,linkify и т. д.. Для этой цели.

Просто поиск ссылка в пабе.пакеты Дэв, и вы получите хорошие пакеты легко добавить ссылки.

Комментарии (0)