|
- import 'dart:io';
-
- import 'package:flutter/cupertino.dart';
- import 'package:flutter/material.dart';
- import 'package:zhiying_base_widget/pages/launch_page/launch_page.dart';
- import 'package:zhiying_comm/util/log/let_log.dart';
- import 'package:zhiying_comm/util/empty_util.dart';
- import 'package:url_launcher/url_launcher.dart';
- import 'package:webview_flutter/webview_flutter.dart';
- import 'package:zhiying_comm/util/shared_prefe_util.dart';
- import 'package:zhiying_comm/util/global_config.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;
- bool _isiOSReview = false;
-
- @override
- void initState() {
- _url = widget.model['url'] ?? '';
- _settingIosReview();
- super.initState();
- }
- void _settingIosReview() async {
- String is_ios_review = await SharedPreferencesUtil.getStringValue(GlobalConfig.IS_IOS_REVIEW, defaultVal: '0');
- setState(() {
- if (is_ios_review == '1') {
- _isiOSReview = true;
- print(_isiOSReview);
- }
- });
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: _createNav(),
- backgroundColor: Colors.white,
- body: WebView(
- initialUrl: _url,
- javascriptMode: JavascriptMode.unrestricted,
- onWebViewCreated: (WebViewController webViewController) {
- _webViewController = webViewController;
- },
- navigationDelegate: (NavigationRequest request) async{
- // 解决Android的拼多多webview 转发的问题
- if(Platform.isAndroid){
- String url = request?.url?.toString();
- if(!EmptyUtil.isEmpty(url) && !url.startsWith('https://') && !url.startsWith('http://')){
- Logger.log('navigation url = $url');
- // if(await canLaunch(url)){
- // await launch(url);
- // }
- return NavigationDecision.prevent;
- }
- }
- 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 ?? '',
- maxLines: 1,
- style: TextStyle(
- fontSize: 15,
- color: Color(0xff333333),
- ),
- ),
- trailing: GestureDetector(
- child: _isiOSReview ? Container() : Icon(Icons.refresh, size: 20,),
- onTap: () {
- _webViewController.reload();
- },
- ),
- );
- }
- }
|