import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:zhiying_comm/zhiying_comm.dart';

class BaseWebview extends StatefulWidget {
  final Map<String, dynamic> model;

  const BaseWebview(
    this.model, {
    Key key,
  }) : super(key: key);

  @override
  _BaseWebviewState createState() => _BaseWebviewState();
}

class _BaseWebviewState extends State<BaseWebview> {
  String _url;
  String _title;
  WebViewController _webViewController;

  @override
  void initState() {
    _url = widget.model['url'] ?? '';
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: _createNav(),
      body: Builder(builder: (BuildContext context) {
        return WebView(
          initialUrl: _url,
          javascriptMode: JavascriptMode.unrestricted,
          onWebViewCreated: (WebViewController webViewController) {
            _webViewController = webViewController;
          },
          navigationDelegate: (NavigationRequest request) {
            return NavigationDecision.navigate;
          },
          onPageStarted: (String url) {
            print('Page started loading: $url');
          },
          onPageFinished: (String url) {
            print('Page finished loading: $url');
            _webViewController.getTitle().then((title) {
              _title = title;
              setState(() {});
            });
          },
          gestureNavigationEnabled: true,
        );
      }),
    );
  }

// 导航栏
  Widget _createNav() {
    return CupertinoNavigationBar(
      border: Border(
        bottom: BorderSide(
          width: 0.0, // One physical pixel.
          style: BorderStyle.none,
        ),
      ),
      backgroundColor: Colors.white,
      leading: Navigator.canPop(context)
          ? GestureDetector(
              child: Container(
                padding: EdgeInsets.zero,
                child: Icon(
                  Icons.arrow_back_ios,
                  size: 20,
                ),
              ),
              onTap: () {
                if (Navigator.canPop(context)) {
                  Navigator.pop(context);
                }
              },
            )
          : Container(),
      middle: Text(
        _title ?? '',
        style: TextStyle(
          fontSize: 15,
          color: HexColor.fromHex('333333'),
        ),
      ),
      trailing: GestureDetector(
        child: Icon(
          Icons.refresh,
          size: 20,
        ),
        onTap: () {
          _webViewController.reload();
        },
      ),
    );
  }
}