import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:limiting_direction_csx/limiting_direction_csx.dart'; import 'package:webview_flutter/webview_flutter.dart'; import 'package:wow_english/common/widgets/we_app_bar.dart'; class WowWebViewPage extends StatefulWidget { const WowWebViewPage({super.key, required this.urlStr, required this.webViewTitle}); final String urlStr; final String webViewTitle; @override State createState() { return _WowWebViewPageState(); } } class _WowWebViewPageState extends State { late final WebViewController _controller; @override void initState() { super.initState(); if (Platform.isIOS) { LimitingDirectionCsx.setScreenDirection(DeviceDirectionMask.PortraitUpsideDown); } else { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); } final WebViewController controller =WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..setBackgroundColor(const Color(0x00000000)) ..setNavigationDelegate( NavigationDelegate( onProgress: (int progress) { // Update loading bar. }, onPageStarted: (String url) { EasyLoading.show(); }, onPageFinished: (String url) { EasyLoading.dismiss(); }, onWebResourceError: (WebResourceError error) { EasyLoading.showError(error.description); }, onNavigationRequest: (NavigationRequest request) { return NavigationDecision.navigate; }, ), ) ..loadRequest(Uri.parse(widget.urlStr)); _controller = controller; } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, appBar: WEAppBar( titleText: widget.webViewTitle, ), body: WebViewWidget(controller: _controller,), ); } @override void deactivate() { super.deactivate(); if (Platform.isIOS) { LimitingDirectionCsx.setScreenDirection(DeviceDirectionMask.Landscape); } else { SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft,DeviceOrientation.landscapeRight]); } } }