import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; ///协议 class AgreementPage extends StatefulWidget { final String title; final String url; const AgreementPage({super.key, required this.title, required this.url}); @override State createState() => _AgreementPageState(); } class _AgreementPageState extends State { late WebViewController controller; @override void initState() { // TODO: implement initState super.initState(); controller = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..setBackgroundColor(const Color(0x00000000)) ..setNavigationDelegate( NavigationDelegate( onProgress: (int progress) { // Update loading bar. }, onPageStarted: (String url) {}, onPageFinished: (String url) {}, onHttpError: (HttpResponseError error) {}, onWebResourceError: (WebResourceError error) {}, onNavigationRequest: (NavigationRequest request) { // if (request.url.startsWith('https://www.youtube.com/')) { // return NavigationDecision.prevent; // } return NavigationDecision.navigate; }, ), ) ..loadRequest(Uri.parse(widget.url)); } @override void dispose() { // TODO: implement dispose super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Color(0xFF121213), scrolledUnderElevation: 0.0, title: Text( widget.title, style: TextStyle(fontSize: 16, color: Colors.white), ), centerTitle: true, leading: IconButton( iconSize: 18, icon: Icon(Icons.arrow_back_ios_sharp), color: Colors.white, onPressed: () { // 处理返回操作 Navigator.pop(context); }, ), ), body: WebViewWidget(controller: controller), ); } }