import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; class WebPage extends StatefulWidget { final String url; final String title; const WebPage({super.key, required this.url, required this.title}); @override State createState() => _WebPageState(); } class _WebPageState extends State { late final WebViewController _controller; double _progress = 0.0; @override void initState() { super.initState(); _controller = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..setNavigationDelegate( NavigationDelegate( onProgress: (progress) { setState(() { _progress = progress / 100.0; }); }, ), ) ..loadRequest(Uri.parse(widget.url)); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), leading: IconButton( icon: const Icon(Icons.arrow_back), onPressed: () async { if (await _controller.canGoBack()) { _controller.goBack(); } else { Navigator.of(context).pop(); } }, ), bottom: PreferredSize( preferredSize: const Size.fromHeight(2.0), child: _progress < 1.0 ? LinearProgressIndicator(value: _progress) : const SizedBox.shrink(), ), ), body: WebViewWidget(controller: _controller), ); } }