android - 如何解决抖动中的超链接错误? (它只显示白屏)

原文 标签 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 - 如何解决抖动中的超链接错误? (它只显示白屏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64736051/

相关文章:

java - Android:此功能无法在Thread中使用,但可以正常运行(尝试添加ProgressDialog)

java - 为其他包 Activity 创建快捷方式的最佳方式

ios - iOS构建包太大,任何优化策略

ios - 如何在iOS应用程序编码中获取图像大小

ios - iOS WatchKit-如何确定代码是否在Watch Extension或应用中运行

flutter - 如何在 flutter 中禁用底部溢出的消息

android - 如何为日期选择器设置日期?

android - “new Thread”不启动新线程吗?

android - Flutter构建在assembleDebug期间失败

http - Flutter Dart - 如何使用 HttpClient() 发送 Post 请求