feat: add loading widget when receiving url scheme
This commit is contained in:
parent
6aa65b857f
commit
e1170d411c
|
@ -67,6 +67,7 @@ class _SettingsProviderState extends State<SettingsProvider> {
|
|||
Map<String, Account> githubAccountMap;
|
||||
String activeLogin;
|
||||
StreamSubscription<Uri> _sub;
|
||||
bool loading = false;
|
||||
|
||||
Future<void> setTheme(int _theme) async {
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
|
@ -103,6 +104,10 @@ class _SettingsProviderState extends State<SettingsProvider> {
|
|||
|
||||
// https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow
|
||||
void _onSchemeDetected(Uri uri) async {
|
||||
setState(() {
|
||||
loading = true;
|
||||
});
|
||||
|
||||
// get token by code
|
||||
var code = uri.queryParameters['code'];
|
||||
// print(code);
|
||||
|
@ -144,7 +149,9 @@ class _SettingsProviderState extends State<SettingsProvider> {
|
|||
print('write github: $githubData');
|
||||
await prefs.setString('github', githubData);
|
||||
|
||||
setState(() {});
|
||||
setState(() {
|
||||
loading = false;
|
||||
});
|
||||
}
|
||||
|
||||
void _initDataFromPref() async {
|
||||
|
|
|
@ -4,6 +4,7 @@ import '../providers/settings.dart';
|
|||
import '../scaffolds/simple.dart';
|
||||
import '../utils/constants.dart';
|
||||
import '../widgets/link.dart';
|
||||
import '../widgets/loading.dart';
|
||||
|
||||
class LoginScreen extends StatefulWidget {
|
||||
@override
|
||||
|
@ -18,6 +19,10 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||
return SimpleScaffold(
|
||||
title: Text('Select account'),
|
||||
bodyBuilder: () {
|
||||
if (settings.loading) {
|
||||
return Center(child: Loading());
|
||||
}
|
||||
|
||||
return Container(
|
||||
child: Column(
|
||||
children: settings.githubAccountMap.entries.map<Widget>((entry) {
|
||||
|
|
|
@ -20,12 +20,6 @@ void nextTick(Function callback, [int milliseconds = 0]) {
|
|||
});
|
||||
}
|
||||
|
||||
class Option<T> {
|
||||
final T value;
|
||||
final Widget widget;
|
||||
Option({this.value, this.widget});
|
||||
}
|
||||
|
||||
Future<bool> showConfirm(BuildContext context, String text) {
|
||||
switch (SettingsProvider.of(context).theme) {
|
||||
case ThemeMap.cupertino:
|
||||
|
@ -81,7 +75,13 @@ Future<bool> showConfirm(BuildContext context, String text) {
|
|||
}
|
||||
}
|
||||
|
||||
Future<T> showOptions<T>(BuildContext context, List<Option<T>> options) {
|
||||
class DialogOption<T> {
|
||||
final T value;
|
||||
final Widget widget;
|
||||
DialogOption({this.value, this.widget});
|
||||
}
|
||||
|
||||
Future<T> showOptions<T>(BuildContext context, List<DialogOption<T>> options) {
|
||||
var builder = (BuildContext context) {
|
||||
return CupertinoAlertDialog(
|
||||
actions: options.map((option) {
|
||||
|
@ -184,128 +184,128 @@ __typename
|
|||
}
|
||||
}
|
||||
}
|
||||
... on ReferencedEvent {
|
||||
createdAt
|
||||
isCrossRepository
|
||||
actor {
|
||||
login
|
||||
}
|
||||
commit {
|
||||
oid
|
||||
url
|
||||
}
|
||||
commitRepository {
|
||||
owner {
|
||||
login
|
||||
}
|
||||
name
|
||||
}
|
||||
}
|
||||
... on ReferencedEvent {
|
||||
createdAt
|
||||
isCrossRepository
|
||||
actor {
|
||||
login
|
||||
}
|
||||
commit {
|
||||
oid
|
||||
url
|
||||
}
|
||||
commitRepository {
|
||||
owner {
|
||||
login
|
||||
}
|
||||
name
|
||||
}
|
||||
}
|
||||
|
||||
... on RenamedTitleEvent {
|
||||
createdAt
|
||||
previousTitle
|
||||
currentTitle
|
||||
actor {
|
||||
login
|
||||
}
|
||||
}
|
||||
... on RenamedTitleEvent {
|
||||
createdAt
|
||||
previousTitle
|
||||
currentTitle
|
||||
actor {
|
||||
login
|
||||
}
|
||||
}
|
||||
|
||||
... on ClosedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
}
|
||||
... on ClosedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
}
|
||||
|
||||
... on ReopenedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
}
|
||||
... on ReopenedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
}
|
||||
|
||||
... on CrossReferencedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
source {
|
||||
__typename
|
||||
... on Issue {
|
||||
number
|
||||
repository {
|
||||
owner {
|
||||
login
|
||||
}
|
||||
name
|
||||
}
|
||||
}
|
||||
... on PullRequest {
|
||||
number
|
||||
repository {
|
||||
owner {
|
||||
login
|
||||
}
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
... on CrossReferencedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
source {
|
||||
__typename
|
||||
... on Issue {
|
||||
number
|
||||
repository {
|
||||
owner {
|
||||
login
|
||||
}
|
||||
name
|
||||
}
|
||||
}
|
||||
... on PullRequest {
|
||||
number
|
||||
repository {
|
||||
owner {
|
||||
login
|
||||
}
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
... on LabeledEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
label {
|
||||
name
|
||||
color
|
||||
}
|
||||
}
|
||||
... on LabeledEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
label {
|
||||
name
|
||||
color
|
||||
}
|
||||
}
|
||||
|
||||
... on UnlabeledEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
label {
|
||||
name
|
||||
color
|
||||
}
|
||||
}
|
||||
... on UnlabeledEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
label {
|
||||
name
|
||||
color
|
||||
}
|
||||
}
|
||||
|
||||
... on MilestonedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
milestoneTitle
|
||||
}
|
||||
|
||||
... on LockedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
lockReason
|
||||
}
|
||||
... on UnlockedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
}
|
||||
... on AssignedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
user {
|
||||
login
|
||||
}
|
||||
}
|
||||
... on MilestonedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
milestoneTitle
|
||||
}
|
||||
|
||||
... on LockedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
lockReason
|
||||
}
|
||||
... on UnlockedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
}
|
||||
... on AssignedEvent {
|
||||
createdAt
|
||||
actor {
|
||||
login
|
||||
}
|
||||
user {
|
||||
login
|
||||
}
|
||||
}
|
||||
''';
|
||||
|
||||
var createWarning =
|
||||
|
|
|
@ -5,7 +5,7 @@ import '../providers/settings.dart';
|
|||
class Loading extends StatelessWidget {
|
||||
final bool more;
|
||||
|
||||
Loading({this.more});
|
||||
Loading({this.more = false});
|
||||
|
||||
Widget _buildIndicator(BuildContext context) {
|
||||
switch (SettingsProvider.of(context).theme) {
|
||||
|
|
Loading…
Reference in New Issue