Flutter 4.x 版本 webview_flutter 嵌套H5
Flutter WebView使用踩坑指南:早期版本代码(使用WebView组件)会导致报错,正确写法应使用WebViewWidget(webview_flutter 4.x引入的新组件)。新版实现需要通过WebViewController配置JavaScript模式并加载URL:创建控制器后,使用级联操作符(..)链式调用配置方法,再将控制器传递给WebViewWidget。注意老版WebVie
·
踩坑早期版本 使用 WebView 代码如下
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget 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});
@override
Widget 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_flutter4.x 版本引入的新组件,用于替代老版本的WebView组件。
2. WebViewController()
- 创建一个 WebView 控制器对象。
3.controller: ...
- 把配置好的 controller 传递给
WebViewWidget,用于控制网页加载和行为。
总结
- 这是 Dart 语言的级联操作符用法,常用于链式调用。
WebViewWidget是新版webview_flutter推荐的用法,老版的WebView已不推荐使用。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)