diff --git a/lib/apis/githost.dart b/lib/apis/githost.dart index dc91a68a..6e2ee4c2 100644 --- a/lib/apis/githost.dart +++ b/lib/apis/githost.dart @@ -2,8 +2,10 @@ import 'dart:async'; import 'package:flutter/foundation.dart'; +typedef OAuthCallback = void Function(GitHostException); + abstract class GitHost { - void init(Function oAuthCallback); + void init(OAuthCallback oAuthCallback); Future launchOAuthScreen(); Future getUserInfo(); diff --git a/lib/apis/github.dart b/lib/apis/github.dart index 21abd0a5..cfedfbf9 100644 --- a/lib/apis/github.dart +++ b/lib/apis/github.dart @@ -16,7 +16,7 @@ class GitHub implements GitHost { var _accessCode = ""; @override - void init(Function callback) { + void init(OAuthCallback callback) { Future _handleMessages(MethodCall call) async { if (call.method != "onURL") { print("GitHub Unknown Call: " + call.method); diff --git a/lib/apis/gitlab.dart b/lib/apis/gitlab.dart index b29bcaae..3f8eb375 100644 --- a/lib/apis/gitlab.dart +++ b/lib/apis/gitlab.dart @@ -18,7 +18,7 @@ class GitLab implements GitHost { var _stateOAuth = ""; @override - void init(Function callback) { + void init(OAuthCallback callback) { Future _handleMessages(MethodCall call) async { if (call.method != "onURL") { print("GitLab Unknown Call: " + call.method); diff --git a/lib/screens/githostsetup_autoconfigure.dart b/lib/screens/githostsetup_autoconfigure.dart index da509adb..6fa8c4b8 100644 --- a/lib/screens/githostsetup_autoconfigure.dart +++ b/lib/screens/githostsetup_autoconfigure.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:function_types/function_types.dart'; import 'package:journal/apis/git.dart'; import 'package:journal/apis/githost_factory.dart'; import 'package:journal/settings.dart'; @@ -9,7 +10,7 @@ import 'githostsetup_loading.dart'; class GitHostSetupAutoConfigure extends StatefulWidget { final GitHostType gitHostType; - final Function onDone; + final Func1 onDone; GitHostSetupAutoConfigure({ @required this.gitHostType, diff --git a/lib/screens/githostsetup_button.dart b/lib/screens/githostsetup_button.dart index f5a246a7..62dc337d 100644 --- a/lib/screens/githostsetup_button.dart +++ b/lib/screens/githostsetup_button.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:function_types/function_types.dart'; import 'package:journal/analytics.dart'; class GitHostSetupButton extends StatelessWidget { - final Function onPressed; + final Func0 onPressed; final String text; final String iconUrl; diff --git a/lib/screens/githostsetup_clone_url.dart b/lib/screens/githostsetup_clone_url.dart index c8246220..4a00ae51 100644 --- a/lib/screens/githostsetup_clone_url.dart +++ b/lib/screens/githostsetup_clone_url.dart @@ -1,11 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:function_types/function_types.dart'; import 'package:journal/apis/githost_factory.dart'; import 'githostsetup_button.dart'; class GitCloneUrlPage extends StatefulWidget { - final Function doneFunction; + final Func1 doneFunction; final String initialValue; GitCloneUrlPage({ @@ -96,8 +97,8 @@ class GitCloneUrlPageState extends State { } class GitCloneUrlKnownProviderPage extends StatefulWidget { - final Function doneFunction; - final Function launchCreateUrlPage; + final Func1 doneFunction; + final Func0 launchCreateUrlPage; final GitHostType gitHostType; final String initialValue; diff --git a/lib/screens/githostsetup_folder.dart b/lib/screens/githostsetup_folder.dart index 1f981298..81be94ec 100644 --- a/lib/screens/githostsetup_folder.dart +++ b/lib/screens/githostsetup_folder.dart @@ -1,11 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:function_types/function_types.dart'; import 'githostsetup_button.dart'; class GitHostSetupFolderPage extends StatelessWidget { final List folders; - final Function rootFolderSelected; - final Function subFolderSelected; + final Func0 rootFolderSelected; + final Func1 subFolderSelected; GitHostSetupFolderPage({ @required this.folders, @@ -47,7 +48,7 @@ class GitHostSetupFolderPage extends StatelessWidget { // FIXME: This needs to be made much much prettier! class FolderListWidget extends StatelessWidget { final List folders; - final Function onSelected; + final Func1 onSelected; FolderListWidget({ @required this.folders, diff --git a/lib/screens/githostsetup_screens.dart b/lib/screens/githostsetup_screens.dart index a1cb9e96..a2364cb9 100644 --- a/lib/screens/githostsetup_screens.dart +++ b/lib/screens/githostsetup_screens.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:dots_indicator/dots_indicator.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:function_types/function_types.dart'; import 'package:journal/analytics.dart'; import 'package:journal/apis/git.dart'; import 'package:journal/apis/githost_factory.dart'; @@ -18,7 +19,7 @@ import 'githostsetup_folder.dart'; import 'githostsetup_sshkey.dart'; class GitHostSetupScreen extends StatefulWidget { - final Function onCompletedFunction; + final Func1 onCompletedFunction; GitHostSetupScreen(this.onCompletedFunction); @@ -471,8 +472,8 @@ class GitHostSetupScreenState extends State { } class GitHostChoicePage extends StatelessWidget { - final Function onKnownGitHost; - final Function onCustomGitHost; + final Func1 onKnownGitHost; + final Func0 onCustomGitHost; GitHostChoicePage({ @required this.onKnownGitHost, @@ -525,7 +526,7 @@ enum GitHostSetupType { } class GitHostAutoConfigureChoicePage extends StatelessWidget { - final Function onDone; + final Func1 onDone; GitHostAutoConfigureChoicePage({@required this.onDone}); diff --git a/lib/screens/githostsetup_sshkey.dart b/lib/screens/githostsetup_sshkey.dart index 6c582746..03164e8f 100644 --- a/lib/screens/githostsetup_sshkey.dart +++ b/lib/screens/githostsetup_sshkey.dart @@ -1,16 +1,15 @@ import 'package:flutter/material.dart'; +import 'package:function_types/function_types.dart'; import 'githostsetup_button.dart'; import 'githostsetup_loading.dart'; -typedef CopyKeyFunction = void Function(BuildContext context); - class GitHostSetupSshKeyKnownProvider extends StatelessWidget { - final Function doneFunction; - final CopyKeyFunction copyKeyFunction; + final Func0 doneFunction; + final Func1 copyKeyFunction; final String publicKey; - final Function openDeployKeyPage; + final Func0 openDeployKeyPage; GitHostSetupSshKeyKnownProvider({ @required this.doneFunction, @@ -83,8 +82,8 @@ class GitHostSetupSshKeyKnownProvider extends StatelessWidget { } class GitHostSetupSshKeyUnknownProvider extends StatelessWidget { - final Function doneFunction; - final CopyKeyFunction copyKeyFunction; + final Func0 doneFunction; + final Func1 copyKeyFunction; final String publicKey; GitHostSetupSshKeyUnknownProvider({ diff --git a/lib/screens/onboarding_screens.dart b/lib/screens/onboarding_screens.dart index 910b8ba7..246c6832 100644 --- a/lib/screens/onboarding_screens.dart +++ b/lib/screens/onboarding_screens.dart @@ -1,8 +1,9 @@ import 'package:dots_indicator/dots_indicator.dart'; import 'package:flutter/material.dart'; +import 'package:function_types/function_types.dart'; class OnBoardingScreen extends StatefulWidget { - final Function onCompletedFunction; + final Func0 onCompletedFunction; OnBoardingScreen(this.onCompletedFunction); @@ -119,7 +120,7 @@ class OnBoardingScreenState extends State { } class OnBoardingBottomButton extends StatelessWidget { - final Function onPressed; + final Func0 onPressed; final String text; OnBoardingBottomButton({ diff --git a/pubspec.lock b/pubspec.lock index bbff8a39..97991849 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -170,6 +170,13 @@ packages: description: flutter source: sdk version: "0.0.0" + function_types: + dependency: "direct main" + description: + name: function_types + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.2" glob: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index cac630d3..c8c31715 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -22,6 +22,7 @@ dependencies: device_info: ^0.4.0+1 flutter_markdown: ^0.2.0 flutter_email_sender: ^2.0.2 + function_types: ^0.0.2 dev_dependencies: flutter_launcher_icons: "^0.7.0"