Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用RocketChat时无法在Flatter Webview中检测页面导航_Android_Flutter_Webview_Rocket.chat - Fatal编程技术网

Android 使用RocketChat时无法在Flatter Webview中检测页面导航

Android 使用RocketChat时无法在Flatter Webview中检测页面导航,android,flutter,webview,rocket.chat,Android,Flutter,Webview,Rocket.chat,我正在使用webview从我的Flatter应用程序中加载一个自托管火箭聊天应用程序。到目前为止,我能够正确加载所有内容。现在,我需要检测用户的配置文件何时被访问并显示提示 e、 g.当user1单击messages部分中的user2时,我应该能够在Flatter应用程序中显示alertbox 在web浏览器中,执行此操作时,URL将更改为。我试图检测此URL何时被打开以执行某些操作,但目前为止没有运气。 这是我的密码: class _WebViewExampleState extends St

我正在使用webview从我的Flatter应用程序中加载一个自托管火箭聊天应用程序。到目前为止,我能够正确加载所有内容。现在,我需要检测用户的配置文件何时被访问并显示提示

e、 g.当user1单击messages部分中的user2时,我应该能够在Flatter应用程序中显示alertbox

在web浏览器中,执行此操作时,URL将更改为。我试图检测此URL何时被打开以执行某些操作,但目前为止没有运气。 这是我的密码:

class _WebViewExampleState extends State<WebViewExample> {
  String loadUrl = 'https://chat.domain.com';

  @override
  Widget build(BuildContext context) {    
    Completer<WebViewController> _controller = Completer<WebViewController>();
    return Scaffold(
      appBar: AppBar(
        title: Text('Webview App'),
        backgroundColor: Colors.black,        
      ),
      body: Builder(builder: (BuildContext context) {
        return Container(
          padding: EdgeInsets.only(bottom: 20.0),
          child: GestureDetector(
            child: Expanded(
              child: WebView(
                initialUrl: loadUrl,
                javascriptMode: JavascriptMode.unrestricted,                
                onWebViewCreated: (WebViewController webViewController) {
                  _controller.complete(webViewController);
                },
                navigationDelegate: (NavigationRequest request) {
                  print('request url: ' + request.url);
                  //even the above print statement is not getting executed when user performs some action
                  if (request.url.startsWith('https://chat.domain.com/direct/')) {
                    String convId = request.url.replaceAll('https://chat.domain.com/direct/', '');
                   //alert here
                   //URL in the browser changes for this user action
                  } else if (request.url.startsWith('https://chat.domain.com/api/v1/method.call/sendMessage')) {
                   //the above url is called when a user sends a message, but this happens in the background. 
                   //URL in the browser remains the same for this user action.
                   //display some alert
                  }
                  print('allowing navigation to $request');
                  return NavigationDecision.navigate;
                },
                onPageStarted: (String url) {
                  print('Page started loading: $url');
                },
                onPageFinished: (String url) {
                  print('Page finished loading: $url');
                },
                gestureNavigationEnabled: true,
              ),
            ),
          ),
        );
      }),
    );
  }
}
class\u WebViewExampleState扩展状态{
字符串loadUrl=https://chat.domain.com';
@凌驾
小部件生成(BuildContext上下文){
Completer _controller=Completer();
返回脚手架(
appBar:appBar(
标题:文本(“Webview应用程序”),
背景颜色:Colors.black,
),
主体:生成器(生成器:(BuildContext上下文){
返回容器(
填充:仅限边缘设置(底部:20.0),
儿童:手势检测器(
儿童:扩大(
孩子:网络视图(
initialUrl:loadUrl,
javascriptMode:javascriptMode.unrestricted,
onWebViewCreated:(WebViewController WebViewController){
_控制器。完成(webViewController);
},
navigationDelegate:(NavigationRequest请求){
打印('请求url:'+请求.url);
//当用户执行某些操作时,甚至上面的print语句也不会执行
if(request.url.startsWith('https://chat.domain.com/direct/')) {
String convId=request.url.replaceAll('https://chat.domain.com/direct/', '');
//警惕这里
//浏览器中的URL将更改此用户操作
}else if(request.url.startsWith('https://chat.domain.com/api/v1/method.call/sendMessage')) {
//当用户发送消息时,会调用上面的url,但这是在后台发生的。
//浏览器中的URL对此用户操作保持不变。
//显示一些警报
}
打印(“允许导航到$request”);
返回NavigationDecision.navigate;
},
onPageStarted:(字符串url){
打印('页面已开始加载:$url');
},
onPageFinished:(字符串url){
打印('Page finished loading:$url');
},
gestureNavigationEnabled:正确,
),
),
),
);
}),
);
}
}
我目前正在使用此插件:webview\u flatter:^0.3.22+1。我已经尝试过其他webview插件,但没有一个能够解决我的问题

我正在考虑监控应用程序发出的URL调用,并在此基础上触发一些操作,但我不知道如何在flutter中实现这一点

任何帮助都将不胜感激