Flutter 找到在Flatter InAppWebView中将查询参数附加到链接打开的方法

Flutter 找到在Flatter InAppWebView中将查询参数附加到链接打开的方法,flutter,webview,wkwebview,Flutter,Webview,Wkwebview,我想要的是,无论何时在webview中打开一个链接,它都应该附加客户端参数。 例如www.google.com?client=android或www.google.com?client=iphone 我尝试过的事情: 1.取消shouldOverrideUrlLoading中的所有请求,并在InAppWebViewController上请求一个新的loadUrl(应用程序在ios上以这种方式加载webview时就会崩溃)我已经更新了我的插件!撰写本文时,最新版本为3.3.0+3 您可以通过以下方

我想要的是,无论何时在webview中打开一个链接,它都应该附加客户端参数。 例如www.google.com?client=android或www.google.com?client=iphone 我尝试过的事情: 1.取消shouldOverrideUrlLoading中的所有请求,并在InAppWebViewController上请求一个新的loadUrl(应用程序在ios上以这种方式加载webview时就会崩溃)

我已经更新了我的插件!撰写本文时,最新版本为
3.3.0+3

您可以通过以下方式通过
shouldOverrideUrlLoading
事件(设置
useShouldOverrideUrlLoading:true
选项)实现您的要求:

导入'dart:async';
导入“dart:io”;
进口“包装:颤振/材料.省道”;
导入“包:flatter_inappwebview/flatter_inappwebview.dart”;
Future main()异步{
WidgetsFlutterBinding.ensureInitialized();
runApp(新的MyApp());
}
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>new_MyAppState();
}
类MyAppState扩展了状态{
inappwebview控制器webView;
@凌驾
void initState(){
super.initState();
}
@凌驾
无效处置(){
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:const Text('InAppWebView示例'),
),
主体:容器(
子项:列(子项:[
扩大(
子:InAppWebView(
初始URL:“https://github.com/flutter?client=“+(Platform.isAndroid?'android':'ios'),
initialHeaders:{},
initialOptions:InAppWebViewGroupOptions(
跨平台:InAppWebViewOptions(
debuggingEnabled:true,
useShouldOverrideUrlLoading:true
),
),
onWebViewCreated:(InAppWebViewController){
网络视图=控制器;
},
onLoadStart:(InAppWebViewController控制器,字符串url){
},
onLoadStop:(InAppWebViewController控制器,字符串url){
打印(url);
},
shouldOverrideUrlLoading:(在AppWebViewController控制器中,shouldOverrideUrlLodingRequest shouldOverrideUrlLodingRequest)异步{
if(Platform.isAndroid | | shouldOverrideUrloadingRequest.iosWKNavigationType==iosWKNavigationType.LINK|已激活){
var url=Uri.parse(shouldOverrideEurlloadingRequest.url);
var queryParams=((url.haskquery)“&':'?”)+“client=“+(Platform.isAndroid?'android':'ios”);
var newUrl=shouldOverrideEurlloadingRequest.url+queryParams;
wait controller.loadUrl(url:newUrl);
return ShouldOverrideUrlLoadingAction.CANCEL;
}
return ShouldOverrideUrlLoadingAction.ALLOW;
},
))
])),
),
);
}
}