踩坑早期版本 使用?WebView 代碼如下
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';class HomePage extends StatelessWidget {const HomePage({super.key});@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('首頁')),body: SafeArea(child: WebView(initialUrl: url,javascriptMode: JavascriptMode.unrestricted,),),);}
}
但是在flutter 會報錯。很多博主都是這個寫法,導致踩坑拍錯很久
正確寫法應該是:
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';class HomePage extends StatelessWidget {const HomePage({super.key});@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('首頁')),body: SafeArea(child: WebViewWidget(controller:WebViewController()..setJavaScriptMode(JavaScriptMode.unrestricted)..loadRequest(Uri.parse('https://www.baidu.com')),),),);}
}
1.?WebViewWidget
- 這是?
webview_flutter
?4.x 版本引入的新組件,用于替代老版本的?WebView
?組件。
2.?WebViewController()
- 創建一個 WebView 控制器對象。
?3.controller: ...
- 把配置好的 controller 傳遞給?
WebViewWidget
,用于控制網頁加載和行為。
總結
- 這是 Dart 語言的級聯操作符用法,常用于鏈式調用。
WebViewWidget
?是新版?webview_flutter
?推薦的用法,老版的?WebView
?已不推薦使用。