import 'package:flutter/material.dart';import 'package:shared_preferences/shared_preferences.dart';import 'package:webview_flutter/webview_flutter.dart';class GroupWebViewBox extends StatefulWidget { final String url; GroupWebViewBox({Key key, @required this.url}):super(key: key); @override _GroupWebViewBoxState createState() => _GroupWebViewBoxState();}class _GroupWebViewBoxState extends State<GroupWebViewBox> { bool isLoading = true; WebViewController _webViewController; /*写入token到Cookie*/ // setcookie() async { // if (_bloc.state.user != null) { // _webViewController.evaluateJavascript('document.cookie="token=${_bloc.state.user.token};"'); // _webViewController.evaluateJavascript('document.cookie="app.domain=$host;"'); // } // } /*写入token到localStorage*/ setlocalStorage() async { final prefs = await SharedPreferences.getInstance(); var token = prefs.getString('token'); _webViewController.evaluateJavascript( """ function setToken() { setTimeout(function() { if(localStorage) { localStorage.setItem('token','$token'); }else { setToken(); } }, 100); } setToken(); """ ); } @override void initState() { super.initState(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( centerTitle: true, title: Text('xxx', style: TextStyle(color: Color(0xff4a4a4a), fontSize: 16, fontWeight: FontWeight.w500)), leading: goBackArr(context), bottom: PreferredSize( preferredSize: Size.fromHeight(2), child: Offstage( offstage: !isLoading, child: SizedBox( height: 2, width: MediaQuery.of(context).size.width, child: LinearProgressIndicator(), ), ), ), ), body: WebView( onWebViewCreated: (WebViewController web) { _webViewController = web; setState(() { isLoading = true; }); }, onPageFinished: (String value) { setState(() { isLoading = false; }); setlocalStorage(); }, initialUrl: widget.url, javascriptMode: JavascriptMode.unrestricted, ), ); }}