62 lines
1.7 KiB
Dart
62 lines
1.7 KiB
Dart
|
|
import 'package:flutter/material.dart';
|
|
import 'package:qhd_prevention/pages/my_appbar.dart';
|
|
import 'package:webview_flutter/webview_flutter.dart';
|
|
|
|
|
|
class WebViewPage extends StatefulWidget {
|
|
final String url;
|
|
final String name;
|
|
|
|
const WebViewPage({Key? key, required this.url, required this.name,}) : super(key: key);
|
|
|
|
@override
|
|
State<WebViewPage> createState() => _WebViewPageState(name);
|
|
|
|
|
|
}
|
|
|
|
class _WebViewPageState extends State<WebViewPage> {
|
|
late final WebViewController _controller;
|
|
final String name;
|
|
ValueNotifier<double> loadingProgress = ValueNotifier(0.0);
|
|
ValueNotifier<bool> isLoading = ValueNotifier(true);
|
|
|
|
_WebViewPageState(this.name);
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_controller = WebViewController()
|
|
..setJavaScriptMode(JavaScriptMode.unrestricted)
|
|
..setNavigationDelegate(NavigationDelegate(
|
|
onProgress: (progress) {
|
|
loadingProgress.value = progress / 100;
|
|
if (progress == 100) isLoading.value = false;
|
|
},
|
|
onPageStarted: (url) => isLoading.value = true,
|
|
onPageFinished: (url) => isLoading.value = false,
|
|
))
|
|
..loadRequest(Uri.parse(widget.url));
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Column(
|
|
children: [
|
|
MyAppbar(title: name),
|
|
Expanded( child: WebViewWidget(controller: _controller),),
|
|
// ValueListenableBuilder<bool>(
|
|
// valueListenable: isLoading,
|
|
// builder: (context, loading, _) {
|
|
// return loading
|
|
// ? const Center(child: CircularProgressIndicator())
|
|
// : const SizedBox();
|
|
// },
|
|
// ),
|
|
],
|
|
|
|
);
|
|
|
|
}
|
|
} |