mirror of
https://github.com/alibaba/flutter-go.git
synced 2025-05-17 21:05:56 +08:00

1. webview 增加 loading 的功能,同时解决 present 试图,动画不正确的问题 2. 修复 ‘关于手册页面’,GitHub 按钮遮挡状态栏的问题 Signed-off-by: cangzhu <cangzhu@wacai.com>
84 lines
2.4 KiB
Dart
84 lines
2.4 KiB
Dart
/// @Author: 一凨
|
|
/// @Date: 2019-01-14 17:44:47
|
|
/// @Last Modified by: 一凨
|
|
/// @Last Modified time: 2019-01-14 19:47:14
|
|
|
|
import 'dart:core';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
|
|
|
|
/// import 'package:flutter_go/model/collection.dart';
|
|
import 'package:flutter_go/event/event_bus.dart';
|
|
import 'package:flutter_go/event/event_model.dart';
|
|
import 'package:flutter_go/api/api.dart';
|
|
|
|
class WebViewPage extends StatefulWidget {
|
|
final String url;
|
|
final String title;
|
|
|
|
WebViewPage(this.url, this.title);
|
|
_WebViewPageState createState() => _WebViewPageState();
|
|
}
|
|
|
|
class _WebViewPageState extends State<WebViewPage> {
|
|
final flutterWebviewPlugin = new FlutterWebviewPlugin();
|
|
|
|
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
|
|
flutterWebviewPlugin.onUrlChanged.listen((String url) {
|
|
print('url change:$url');
|
|
if (url.indexOf('loginSuccess') > -1) {
|
|
String urlQuery = url.substring(url.indexOf('?') + 1);
|
|
String loginName, token;
|
|
List<String> queryList = urlQuery.split('&');
|
|
for (int i = 0; i < queryList.length; i++) {
|
|
String queryNote = queryList[i];
|
|
int eqIndex = queryNote.indexOf('=');
|
|
if (queryNote.substring(0, eqIndex) == 'loginName') {
|
|
loginName = queryNote.substring(eqIndex + 1);
|
|
}
|
|
if (queryNote.substring(0, eqIndex) == 'accessToken') {
|
|
token = queryNote.substring(eqIndex + 1);
|
|
}
|
|
}
|
|
if (ApplicationEvent.event != null) {
|
|
ApplicationEvent.event
|
|
.fire(UserGithubOAuthEvent(loginName, token, true));
|
|
}
|
|
print('ready close');
|
|
|
|
flutterWebviewPlugin.close();
|
|
// 验证成功
|
|
} else if (url.indexOf('${Api.BASE_URL}loginFail') == 0) {
|
|
// 验证失败
|
|
if (ApplicationEvent.event != null) {
|
|
ApplicationEvent.event.fire(UserGithubOAuthEvent('', '', true));
|
|
}
|
|
flutterWebviewPlugin.close();
|
|
}
|
|
});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
key: _scaffoldKey,
|
|
appBar: AppBar(
|
|
title: Text(widget.title),
|
|
),
|
|
body: WebviewScaffold(
|
|
url: widget.url,
|
|
withZoom: false,
|
|
withLocalStorage: true,
|
|
withJavascript: true,
|
|
hidden: true,
|
|
),
|
|
);
|
|
}
|
|
}
|