Skip to content

Commit

Permalink
update oauth webview
Browse files Browse the repository at this point in the history
  • Loading branch information
CarGuo committed Jul 14, 2020
1 parent b2eb5bf commit 1dac7a5
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 54 deletions.
8 changes: 5 additions & 3 deletions lib/common/dao/user_dao.dart
Expand Up @@ -44,13 +44,15 @@ class UserDao {
await LocalStorage.save(Config.TOKEN_KEY, _token);


var resultData = await getUserInfo(null);
if (Config.DEBUG) {
resultData = await getUserInfo(null);
if (Config.DEBUG ) {
print("user result " + resultData.result.toString());
print(resultData.data);
print(res.data.toString());
}
store.dispatch(new UpdateUserAction(resultData.data));
if(resultData.result == true) {
store.dispatch(new UpdateUserAction(resultData.data));
}
}

return new DataResult(resultData, res.result);
Expand Down
105 changes: 54 additions & 51 deletions lib/page/login/login_webview.dart
@@ -1,11 +1,9 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
import 'package:gsy_github_app_flutter/common/localization/default_localizations.dart';
import 'package:gsy_github_app_flutter/common/style/gsy_style.dart';
import 'package:gsy_github_app_flutter/widget/gsy_common_option_widget.dart';
import 'package:webview_flutter/webview_flutter.dart';


class LoginWebView extends StatefulWidget {
final String url;
Expand All @@ -18,6 +16,8 @@ class LoginWebView extends StatefulWidget {
}

class _LoginWebViewState extends State<LoginWebView> {
final flutterWebViewPlugin = new FlutterWebviewPlugin();

_renderTitle() {
if (widget.url == null || widget.url.length == 0) {
return new Text(widget.title);
Expand All @@ -31,66 +31,69 @@ class _LoginWebViewState extends State<LoginWebView> {
overflow: TextOverflow.ellipsis,
),
)),
GSYCommonOptionWidget(url: widget.url),
]);
}

final FocusNode focusNode = new FocusNode();
renderLoading() {
return new Center(
child: new Container(
width: 200.0,
height: 200.0,
padding: new EdgeInsets.all(4.0),
child: new Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new SpinKitDoubleBounce(color: Theme.of(context).primaryColor),
new Container(width: 10.0),
new Container(
child: new Text(GSYLocalizations.i18n(context).loading_text,
style: GSYConstant.middleText)),
],
),
),
);
}

bool isLoading = true;
@override
void initState() {
super.initState();
flutterWebViewPlugin.onStateChanged.listen((WebViewStateChanged state) {
if (mounted) {
if (state.type == WebViewState.shouldStart) {
print("shouldStart ${state.url}");
if (state.url != null &&
state.url.startsWith("gsygithubapp://authed")) {
var code = Uri.parse(state.url).queryParameters["code"];
print("code ${code}");
flutterWebViewPlugin.reloadUrl("about:blank");
Navigator.of(context).pop(code);
}
}
}
});
}

@override
void dispose() {
flutterWebViewPlugin.dispose();
super.dispose();
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: new AppBar(
title: _renderTitle(),
),
body: new Stack(
children: <Widget>[
TextField(
focusNode: focusNode,
WebviewScaffold(
appBar: new AppBar(
title: _renderTitle(),
),
//invalidUrlRegex: "gsygithubapp://authed",
initialChild: renderLoading(),
url: widget.url,
),
WebView(
initialUrl: widget.url,
javascriptMode: JavascriptMode.unrestricted,
initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,
navigationDelegate: (NavigationRequest navigation) {
if (navigation.url != null &&
navigation.url.startsWith("gsygithubapp://authed")) {
var code = Uri.parse(navigation.url).queryParameters["code"];
print("code ${code}");
Navigator.of(context).pop(code);
return NavigationDecision.prevent;
}
return NavigationDecision.navigate;
},
onPageFinished: (_) {
setState(() {
isLoading = false;
});
}),
if (isLoading)
new Center(
child: new Container(
width: 200.0,
height: 200.0,
padding: new EdgeInsets.all(4.0),
child: new Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new SpinKitDoubleBounce(
color: Theme.of(context).primaryColor),
new Container(width: 10.0),
new Container(
child: new Text(
GSYLocalizations.i18n(context).loading_text,
style: GSYConstant.middleText)),
],
),
),
)
],
),
);
}
}
}

0 comments on commit 1dac7a5

Please sign in to comment.