Vui lòng mở trang này trên iPhone hoặc iPad
import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'My Web App', debugShowCheckedModeBanner: false, theme: ThemeData( useMaterial3: true, primarySwatch: Colors.blue, ), home: const WebViewScreen(), ); } } class WebViewScreen extends StatefulWidget { const WebViewScreen({super.key}); @override State<WebViewScreen> createState() => _WebViewScreenState(); } class _WebViewScreenState extends State<WebViewScreen> { late final WebViewController _controller; bool _isLoading = true; @override void initState() { super.initState(); // กำหนดค่า WebViewController _controller = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..setBackgroundColor(const Color(0x00000000)) ..setNavigationDelegate( NavigationDelegate( onPageStarted: (String url) { setState(() { _isLoading = true; }); }, onPageFinished: (String url) { setState(() { _isLoading = false; }); }, onWebResourceError: (WebResourceError error) { debugPrint('Error: ${error.description}'); }, ), ) ..loadRequest(Uri.parse('https://ipas.cc/fd5xxq')); } @override Widget build(BuildContext context) { // รองรับการกดย้อนกลับ (Back Button) เพื่อถอยหลังในเว็บแทนที่จะปิดแอปทันที return PopScope( canPop: false, onPopInvokedWithResult: (didPop, result) async { if (didPop) return; if (await _controller.canGoBack()) { await _controller.goBack(); } else { if (context.mounted) { Navigator.of(context).pop(); } } }, child: Scaffold( body: SafeArea( child: Stack( children: [ // แสดงหน้าเว็บ WebViewWidget(controller: _controller), // แสดงวงกลมหมุนๆ ระหว่างรอโหลดหน้าเว็บ if (_isLoading) const Center( child: CircularProgressIndicator(), ), ], ), ), ), ); } }
Được hỗ trợ bởi IPAS.CC