android - 如何解决flutter中的超链接错误? (它只向我显示一个白屏)

标签 android ios flutter dart

我使用 url_launcher 包在 flutter 应用程序中创建超链接。

Widget build(BuildContext context) {
    final Size size = MediaQuery.of(context).size;
    List<String> dataList = data.split('@@');

    return Scaffold(
      backgroundColor: Color(0xffd6d6d6),
      appBar: AppBar(
        backgroundColor: Color(0xff3D1472),
        elevation: 0,
      ),
      drawer: AppDrawer(),
      body: SingleChildScrollView(
          child: Column(
        children: <Widget>[
          Stack(
            children: <Widget>[
              Head(size: size),
              Column(
                children: <Widget>[
                  Padding(
                    padding: EdgeInsets.only(
                        top: 5,
                        left: size.width * 0.2,
                        right: size.width * 0.2),
                    child: NewsHead(
                      size: size,
                      dataList: dataList,
                      imgNum: 0,
                      titleNum: 10,
                      urlNum: 20,
                    ),
                  ),

以上是主要代码部分。

这是 NewsHead 的代码。

class NewsHead extends StatefulWidget {
  final Size size;
  final List<String> dataList;
  final int imgNum;
  final int titleNum;
  final int urlNum;

  const NewsHead({this.size, this.dataList, this.imgNum, this.titleNum, this.urlNum});

  @override
  _NewsHeadState createState() => _NewsHeadState();
}

class _NewsHeadState extends State<NewsHead> {
  Future<void> _launched;

  @override
  Widget build(BuildContext context) {
    Size size = widget.size;
    List<String> dataList = widget.dataList;
    int imgNum = widget.imgNum;
    int titleNum = widget.titleNum;
    int urlNum = widget.urlNum;

   
    return Column(
      children: [
        Image.network(
          dataList[imgNum],
          width: size.width * 0.6,
          height: size.height * 0.25,
          fit: BoxFit.fill,
        ),
        SizedBox(
          height: size.height*0.05+100,
          child: RaisedButton(
              onPressed: () => setState(() {
                _launched = _launchURL(dataList[urlNum]);
              }),
              color: Colors.transparent,
              elevation: 0,
              child: Text(
                dataList[titleNum],
                style: TextStyle(fontSize: 20, color: Colors.white70),
              )),
        ),
      ],
    );

下面是_launchURL的代码。

Future<void> _launchURL(String url) async {
  if (await canLaunch(url)) {
    await launch(
      url,
      forceSafariVC: true,
      forceWebView: true,
      headers: <String, String>{'my_header_key': 'my_header_value'},
    );
  } else {
    throw 'Could not launch $url';
  }
}

我按照这里的示例_launchInWebViewOrVCcode( https://pub.dev/packages/url_launcher/example )

当我单击链接到该网站的文本时,它只向我显示一个白屏。

Performing hot reload...
Syncing files to device Android SDK built for x86...
Reloaded 0 of 539 libraries in 140ms.
D/EGL_emulation( 6934): eglMakeCurrent: 0xa9485240: ver 2 0 (tinfo 0xa9483a00)
E/eglCodecCommon( 6934): glUtilsParamSize: unknow param 0x000085b5
E/eglCodecCommon( 6934): glUtilsParamSize: unknow param 0x000085b5
D/EGL_emulation( 6934): eglMakeCurrent: 0x863f6140: ver 2 0 (tinfo 0x8187ef10)
D/EGL_emulation( 6934): eglMakeCurrent: 0x863f6140: ver 2 0 (tinfo 0x8187ef10)
E/eglCodecCommon( 6934): glUtilsParamSize: unknow param 0x000085b5
I/chatty  ( 6934): uid=10083(u0_a83) RenderThread identical 18 lines
E/eglCodecCommon( 6934): glUtilsParamSize: unknow param 0x000085b5
E/eglCodecCommon( 6934): glUtilsParamSize: unknow param 0x000085b5
E/eglCodecCommon( 6934): glUtilsParamSize: unknow param 0x000085b5

它还告诉我“未使用字段‘_launched’的值”。 我该如何解决这个问题?

最佳答案

URL 可能已正确加载,但根据您尝试显示的网站,您可能需要启用 Javascript(默认情况下处于禁用状态)。

尝试将 enableJavaScript: true, 添加到 launch 函数中。

Future<void> _launchURL(String url) async {
  if (await canLaunch(url)) {
    await launch(
      url,
      forceSafariVC: true,
      forceWebView: true,
      enableJavaScript: true,
      headers: <String, String>{'my_header_key': 'my_header_value'},
    );
  } else {
    throw 'Could not launch $url';
  }
}

关于android - 如何解决flutter中的超链接错误? (它只向我显示一个白屏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64736051/

相关文章:

java - 从 android 中的 R 类获取名称

android - 没有找到 JNI_OnLoad ... 跳过 init

android - 谷歌地图 - 运行时异常 - 错误膨胀类 fragment

ios - 在 iOS 中到达屏幕边缘时转换图像

flutter - 如何在 flutter 中改变按钮的价格

flutter 错误 :unable to find git path in windows

android - 在移动设备上打开 Sans 渲染不正确

ios - 使用照片框架将图像保存到照片库

ios - UITableViewCell 动态高度不适用于大小类

date - 如何在 flutter 中创建计时器选择器?