webview_page.dart 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import 'dart:async';
  2. import 'package:flutter/material.dart';
  3. import 'package:liftmanager/routers/fluro_navigator.dart';
  4. import 'package:liftmanager/widgets/app_bar.dart';
  5. import 'package:webview_flutter/webview_flutter.dart';
  6. class WebViewPage extends StatefulWidget {
  7. const WebViewPage({
  8. Key key,
  9. @required this.title,
  10. @required this.url,
  11. }) : super(key: key);
  12. final String title;
  13. final String url;
  14. @override
  15. _WebViewPageState createState() => _WebViewPageState();
  16. }
  17. class _WebViewPageState extends State<WebViewPage> {
  18. final Completer<WebViewController> _controller = Completer<WebViewController>();
  19. @override
  20. Widget build(BuildContext context) {
  21. return FutureBuilder<WebViewController>(
  22. future: _controller.future,
  23. builder: (context, snapshot) {
  24. return WillPopScope(
  25. onWillPop: () async {
  26. if (snapshot.hasData){
  27. bool canGoBack = await snapshot.data.canGoBack();
  28. if (canGoBack){
  29. // 网页可以返回时,优先返回上一页
  30. snapshot.data.goBack();
  31. return Future.value(false);
  32. }
  33. return Future.value(false);
  34. }
  35. return Future.value(false);
  36. },
  37. child: Scaffold(
  38. appBar: MyAppBar(
  39. centerTitle: widget.title,
  40. ),
  41. body: WebView(
  42. initialUrl: widget.url,
  43. javascriptMode: JavascriptMode.unrestricted,
  44. onWebViewCreated: (WebViewController webViewController) {
  45. _controller.complete(webViewController);
  46. },
  47. )
  48. ),
  49. );
  50. }
  51. );
  52. }
  53. }