【问题标题】:I would like to open a URL in a WebView from within a TextSpan我想从 TextSpan 中打开 WebView 中的 URL
【发布时间】:2020-01-08 16:04:18
【问题描述】:

这是我的代码。

Center(
  child: SingleChildScrollView(
    child: Container(
      child: RichText(
        text: TextSpan(
          //style: DefaultTextStyle.of(context).style,
          children: [
            TextSpan(
              text: 'URL IS IN HERE.COM!\n',  
              style: TextStyle(letterSpacing: 1, fontSize: 26.0, fontWeight: FontWeight.bold, color: Colors.black)
            ),
            ...

我想点击文本字符串('URL IS IN HERE.COM!)并让它在我的 webview 小部件中打开?

【问题讨论】:

  • 您是否已经实现了 WebView?你想在应用程序外打开网址吗?您想在您的应用程序中打开浏览器的选项卡吗?这些都是不同的解决方案。请在您的帖子中添加更多信息。
  • 是的,我已经在单独的小部件中实现了一个 WebView。所以我想使用 WebView 小部件在我的应用程序中打开 URL。我不想在应用程序外部或任何浏览器选项卡之外打开,谢谢!
  • 这是我的 WebView 小部件。

标签: url flutter webview textspan


【解决方案1】:

您可以使用 textspan 的识别器属性,对于在浏览器中打开的 url,您可以使用 https://pub.dev/packages/url_launcher

小部件

TextSpan(text: 'Non touchable. ', children: [
  new TextSpan(
    text: 'Tap here.',
    recognizer: new TapGestureRecognizer()..onTap = () => {
      _launchURL();
    },
  )
])

方法

_launchURL() async {
  const url = 'https://flutter.dev';
  if (await canLaunch(url)) {
    await launch(url);
  } else {
    throw 'Could not launch $url';
  }
}

【讨论】:

  • 我不希望通过 url_launcher 使用浏览器或浏览器选项卡。我的意图是使用我已经实现的 WebView 作为单独的小部件并在我的应用程序中打开它。使用文本字符串作为可点击的“URL”..!
  • 我的 WebView 有状态小部件代码低于...!
  • 我想打开 WebView 而不是 Web Browser..??.
【解决方案2】:

经过大量阅读和研究,我已经解决了,这是使用 URL 方案的最佳解决方案。

               onTap: () async {
                    const url = "https:www.example.com";
                  if (await canLaunch(url)) {
                      await launch(url, forceWebView: true);
                } else {
                      throw "Could not launch $url";
                  }
                },

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多