Flutter(ChromeSafariBrowser._throwIsAlreadyOpened错误)

问题描述 投票:0回答:2

我正在使用一个名为flutter_inappbrowser 1.2.1的库。在此库的帮助下,我正在打开浏览器,并且第一次运行良好,但是在此之后,如果我们尝试再次打开浏览器,它将抛出错误

[[错误:flutter / lib / ui / ui_dart_state.cc(148)]未处理的异常:异常:[错误:无法打开https://www.abcd.com/xyzal.html!浏览器已经打开。]

下面提供了用于操作的代码。

Center(
child: InkWell(
onTap: () {
chromeSafariBrowser
    .open(url, options: {
"addShareButton": true,
"toolbarBackgroundColor": "#FFFFFF",
"dismissButtonStyle": 1,
"preferredBarTintColor": "#FFFFFF",
"instantAppsEnabled": false
}, optionsFallback: {
"toolbarTopBackgroundColor": "#FFFFFF",
"closeButtonCaption": "Close"
});
},
child: Text(
'Read More...',
style: TextStyle(
color: Color(0xFF38969A),
fontSize: 16.0,
decoration: TextDecoration.underline,
fontWeight: FontWeight.bold),
),
))


class MyInAppBrowser extends InAppBrowser {
  @override
  Future onLoadStart(String url) async {
    print("\n\nStarted $url\n\n");
  }

  @override
  Future onLoadStop(String url) async {
    print("\n\nStopped $url\n\n");
  }

  @override
  void onLoadError(String url, int code, String message) {
    print("\n\nCan't load $url.. Error: $message\n\n");
  }

  @override
  void onExit() {
    print("\n\nBrowser closed!\n\n");
  }
}

MyInAppBrowser inAppBrowserFallback = new MyInAppBrowser();

class MyChromeSafariBrowser extends ChromeSafariBrowser {
  MyChromeSafariBrowser(browserFallback) : super(browserFallback);

  @override
  void onOpened() {
    print("ChromeSafari browser opened");
  }

  @override
  void onLoaded() {
    print("ChromeSafari browser loaded");
  }

  @override
  void onClosed() {
    print("ChromeSafari browser closed");
  }
}

MyChromeSafariBrowser chromeSafariBrowser =
    new MyChromeSafariBrowser(inAppBrowserFallback);

任何帮助,谢谢。

flutter browser inappbrowser
2个回答
0
投票

在您的onTap中,您可以检查浏览器是否隐藏(打开),然后显示它而不是打开它:


0
投票

我已经找到了解决方案,将其发布在这里,因为将来可能会对某人有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.