【问题标题】:flutter_inappwebview dynamic URL changeflutter_inappwebview 动态 URL 变化
【发布时间】:2021-05-08 16:51:49
【问题描述】:

我正在使用 flutter_inappwebview 在 Flutter 应用程序中显示我的网站。

在我的应用程序一个抽屉菜单中,当我单击抽屉菜单项时更改flutter_inappwebview URL 并在flutter_inappwebview 中加载新URL。

抽屉菜单和flutter_inappwebview都在不同的页面中。

这在flutter中是否可行

这是我的 flutter_inappwebview 代码

class homePage extends StatefulWidget {
  @override
  static const String routeName = '/homePage';
  _homePageState createState() => _homePageState();
}

class _homePageState extends State<homePage> {
  String url = "";
  double progress = 0;
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
    debugShowCheckedModeBanner:false,
    home: Scaffold(
      body: Container(
        child: Column(children: <Widget>[
          Container(
            padding: EdgeInsets.all(2.0),
            child: progress < 1.0
                ? LinearProgressIndicator(value: progress)
                : Container()),
            Expanded(
              child: Container(
              margin: const EdgeInsets.all(0.0),
              child: InAppWebView(
                initialUrl: selectedUrl,
                initialOptions: InAppWebViewGroupOptions(
                  crossPlatform: InAppWebViewOptions(
                    debuggingEnabled: true,
                  )
               ),
               onWebViewCreated: (InAppWebViewController controller) {
                 _webViewController = controller;
               },
               onLoadStart: (InAppWebViewController controller, String url) {
                 setState(() {
                   this.url = url;
                 });
               },
               onLoadStop: (InAppWebViewController controller, String url) async {
                 setState(() {
                   this.url = url;
                 });
               },
               onProgressChanged: (InAppWebViewController controller, int progress) {
                 setState(() {
                   this.progress = progress / 100;
                 });
               },
             ),
           ),
         ),
       ]),
     ),
   ),
 );

} }

【问题讨论】:

    标签: flutter flutter-inappwebview


    【解决方案1】:

    你可以使用 controller.loadUrl() 方法:

    InAppWebViewController? webViewController;
    
    
    InAppWebView(
        initialUrlRequest: URLRequest(
          url: Uri.parse(url),
        ),
      onWebViewCreated: (controller){
          webViewController = controller;
      },
    )
    
    
    webViewController?.loadUrl(urlRequest: URLRequest(
      url: Uri.parse(url),
    ));
    
    

    【讨论】:

      【解决方案2】:

      您可以通过以下代码监听 URL 变化。

      InAppWebView(
              ...
              onUpdateVisitedHistory: (_, Uri uri, __) {
                    // uri containts newly loaded url
              },
      }
      

      【讨论】:

        猜你喜欢
        • 2021-11-29
        • 2021-07-26
        • 2013-06-06
        • 2012-03-24
        • 2017-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多