使用webview_flutter报错:WebViewController无未命名构造函数
解决webview_flutter ^4.0.6中WebViewController未命名构造函数错误
在使用webview_flutter 4.0.6版本开发Flutter应用时,初始化WebViewController出现以下错误:
类'WebViewController'没有未命名构造函数。 请尝试使用'WebViewController'中定义的命名构造函数之一。
相关代码
pubspec.yaml
webview_flutter: ^4.0.6
原Dart代码
WebViewController breachWebViewController = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..setBackgroundColor(const Color(0x00000000)) ..setNavigationDelegate( NavigationDelegate( onProgress: (int progress) { // Update loading bar. }, onPageStarted: (String url) {}, onPageFinished: (String url) {}, onWebResourceError: (WebResourceError error) {}, onNavigationRequest: (NavigationRequest request) { if (request.url.startsWith('https://www.youtube.com/')) { return NavigationDecision.prevent; } return NavigationDecision.navigate; }, ), ) ..loadRequest(Uri.parse('https://flutter.dev'));
问题原因
webview_flutter 4.x版本重构了API,WebViewController的默认(未命名)构造函数被移除,必须使用官方提供的命名构造函数进行初始化。
解决方法
将初始化方式替换为WebViewController.fromPlatform()命名构造函数,其余链式调用逻辑保持不变:
修正后的Dart代码
WebViewController breachWebViewController = WebViewController.fromPlatform() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..setBackgroundColor(const Color(0x00000000)) ..setNavigationDelegate( NavigationDelegate( onProgress: (int progress) { // Update loading bar. }, onPageStarted: (String url) {}, onPageFinished: (String url) {}, onWebResourceError: (WebResourceError error) {}, onNavigationRequest: (NavigationRequest request) { if (request.url.startsWith('https://www.youtube.com/')) { return NavigationDecision.prevent; } return NavigationDecision.navigate; }, ), ) ..loadRequest(Uri.parse('https://flutter.dev'));
内容的提问来源于stack exchange,提问作者Ahmed Wagdi
相关产品推荐
相关产品推荐

