mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-28 09:47:35 +08:00
Dart: Give all functions explicit types
It makes the code easier to understand and this way the static type checker will catch bugs for us.
This commit is contained in:
@ -2,8 +2,10 @@ import 'dart:async';
|
|||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
|
|
||||||
|
typedef OAuthCallback = void Function(GitHostException);
|
||||||
|
|
||||||
abstract class GitHost {
|
abstract class GitHost {
|
||||||
void init(Function oAuthCallback);
|
void init(OAuthCallback oAuthCallback);
|
||||||
Future launchOAuthScreen();
|
Future launchOAuthScreen();
|
||||||
|
|
||||||
Future<UserInfo> getUserInfo();
|
Future<UserInfo> getUserInfo();
|
||||||
|
@ -16,7 +16,7 @@ class GitHub implements GitHost {
|
|||||||
var _accessCode = "";
|
var _accessCode = "";
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void init(Function callback) {
|
void init(OAuthCallback callback) {
|
||||||
Future _handleMessages(MethodCall call) async {
|
Future _handleMessages(MethodCall call) async {
|
||||||
if (call.method != "onURL") {
|
if (call.method != "onURL") {
|
||||||
print("GitHub Unknown Call: " + call.method);
|
print("GitHub Unknown Call: " + call.method);
|
||||||
|
@ -18,7 +18,7 @@ class GitLab implements GitHost {
|
|||||||
var _stateOAuth = "";
|
var _stateOAuth = "";
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void init(Function callback) {
|
void init(OAuthCallback callback) {
|
||||||
Future _handleMessages(MethodCall call) async {
|
Future _handleMessages(MethodCall call) async {
|
||||||
if (call.method != "onURL") {
|
if (call.method != "onURL") {
|
||||||
print("GitLab Unknown Call: " + call.method);
|
print("GitLab Unknown Call: " + call.method);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:function_types/function_types.dart';
|
||||||
import 'package:journal/apis/git.dart';
|
import 'package:journal/apis/git.dart';
|
||||||
import 'package:journal/apis/githost_factory.dart';
|
import 'package:journal/apis/githost_factory.dart';
|
||||||
import 'package:journal/settings.dart';
|
import 'package:journal/settings.dart';
|
||||||
@ -9,7 +10,7 @@ import 'githostsetup_loading.dart';
|
|||||||
|
|
||||||
class GitHostSetupAutoConfigure extends StatefulWidget {
|
class GitHostSetupAutoConfigure extends StatefulWidget {
|
||||||
final GitHostType gitHostType;
|
final GitHostType gitHostType;
|
||||||
final Function onDone;
|
final Func1<String, void> onDone;
|
||||||
|
|
||||||
GitHostSetupAutoConfigure({
|
GitHostSetupAutoConfigure({
|
||||||
@required this.gitHostType,
|
@required this.gitHostType,
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:function_types/function_types.dart';
|
||||||
import 'package:journal/analytics.dart';
|
import 'package:journal/analytics.dart';
|
||||||
|
|
||||||
class GitHostSetupButton extends StatelessWidget {
|
class GitHostSetupButton extends StatelessWidget {
|
||||||
final Function onPressed;
|
final Func0<void> onPressed;
|
||||||
final String text;
|
final String text;
|
||||||
final String iconUrl;
|
final String iconUrl;
|
||||||
|
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:function_types/function_types.dart';
|
||||||
import 'package:journal/apis/githost_factory.dart';
|
import 'package:journal/apis/githost_factory.dart';
|
||||||
|
|
||||||
import 'githostsetup_button.dart';
|
import 'githostsetup_button.dart';
|
||||||
|
|
||||||
class GitCloneUrlPage extends StatefulWidget {
|
class GitCloneUrlPage extends StatefulWidget {
|
||||||
final Function doneFunction;
|
final Func1<String, void> doneFunction;
|
||||||
final String initialValue;
|
final String initialValue;
|
||||||
|
|
||||||
GitCloneUrlPage({
|
GitCloneUrlPage({
|
||||||
@ -96,8 +97,8 @@ class GitCloneUrlPageState extends State<GitCloneUrlPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class GitCloneUrlKnownProviderPage extends StatefulWidget {
|
class GitCloneUrlKnownProviderPage extends StatefulWidget {
|
||||||
final Function doneFunction;
|
final Func1<String, void> doneFunction;
|
||||||
final Function launchCreateUrlPage;
|
final Func0<void> launchCreateUrlPage;
|
||||||
final GitHostType gitHostType;
|
final GitHostType gitHostType;
|
||||||
final String initialValue;
|
final String initialValue;
|
||||||
|
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:function_types/function_types.dart';
|
||||||
|
|
||||||
import 'githostsetup_button.dart';
|
import 'githostsetup_button.dart';
|
||||||
|
|
||||||
class GitHostSetupFolderPage extends StatelessWidget {
|
class GitHostSetupFolderPage extends StatelessWidget {
|
||||||
final List<String> folders;
|
final List<String> folders;
|
||||||
final Function rootFolderSelected;
|
final Func0<void> rootFolderSelected;
|
||||||
final Function subFolderSelected;
|
final Func1<String, void> subFolderSelected;
|
||||||
|
|
||||||
GitHostSetupFolderPage({
|
GitHostSetupFolderPage({
|
||||||
@required this.folders,
|
@required this.folders,
|
||||||
@ -47,7 +48,7 @@ class GitHostSetupFolderPage extends StatelessWidget {
|
|||||||
// FIXME: This needs to be made much much prettier!
|
// FIXME: This needs to be made much much prettier!
|
||||||
class FolderListWidget extends StatelessWidget {
|
class FolderListWidget extends StatelessWidget {
|
||||||
final List<String> folders;
|
final List<String> folders;
|
||||||
final Function onSelected;
|
final Func1<String, void> onSelected;
|
||||||
|
|
||||||
FolderListWidget({
|
FolderListWidget({
|
||||||
@required this.folders,
|
@required this.folders,
|
||||||
|
@ -3,6 +3,7 @@ import 'dart:io';
|
|||||||
import 'package:dots_indicator/dots_indicator.dart';
|
import 'package:dots_indicator/dots_indicator.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:function_types/function_types.dart';
|
||||||
import 'package:journal/analytics.dart';
|
import 'package:journal/analytics.dart';
|
||||||
import 'package:journal/apis/git.dart';
|
import 'package:journal/apis/git.dart';
|
||||||
import 'package:journal/apis/githost_factory.dart';
|
import 'package:journal/apis/githost_factory.dart';
|
||||||
@ -18,7 +19,7 @@ import 'githostsetup_folder.dart';
|
|||||||
import 'githostsetup_sshkey.dart';
|
import 'githostsetup_sshkey.dart';
|
||||||
|
|
||||||
class GitHostSetupScreen extends StatefulWidget {
|
class GitHostSetupScreen extends StatefulWidget {
|
||||||
final Function onCompletedFunction;
|
final Func1<String, void> onCompletedFunction;
|
||||||
|
|
||||||
GitHostSetupScreen(this.onCompletedFunction);
|
GitHostSetupScreen(this.onCompletedFunction);
|
||||||
|
|
||||||
@ -471,8 +472,8 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class GitHostChoicePage extends StatelessWidget {
|
class GitHostChoicePage extends StatelessWidget {
|
||||||
final Function onKnownGitHost;
|
final Func1<GitHostType, void> onKnownGitHost;
|
||||||
final Function onCustomGitHost;
|
final Func0<void> onCustomGitHost;
|
||||||
|
|
||||||
GitHostChoicePage({
|
GitHostChoicePage({
|
||||||
@required this.onKnownGitHost,
|
@required this.onKnownGitHost,
|
||||||
@ -525,7 +526,7 @@ enum GitHostSetupType {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class GitHostAutoConfigureChoicePage extends StatelessWidget {
|
class GitHostAutoConfigureChoicePage extends StatelessWidget {
|
||||||
final Function onDone;
|
final Func1<GitHostSetupType, void> onDone;
|
||||||
|
|
||||||
GitHostAutoConfigureChoicePage({@required this.onDone});
|
GitHostAutoConfigureChoicePage({@required this.onDone});
|
||||||
|
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:function_types/function_types.dart';
|
||||||
|
|
||||||
import 'githostsetup_button.dart';
|
import 'githostsetup_button.dart';
|
||||||
import 'githostsetup_loading.dart';
|
import 'githostsetup_loading.dart';
|
||||||
|
|
||||||
typedef CopyKeyFunction = void Function(BuildContext context);
|
|
||||||
|
|
||||||
class GitHostSetupSshKeyKnownProvider extends StatelessWidget {
|
class GitHostSetupSshKeyKnownProvider extends StatelessWidget {
|
||||||
final Function doneFunction;
|
final Func0<void> doneFunction;
|
||||||
final CopyKeyFunction copyKeyFunction;
|
final Func1<BuildContext, void> copyKeyFunction;
|
||||||
final String publicKey;
|
final String publicKey;
|
||||||
|
|
||||||
final Function openDeployKeyPage;
|
final Func0<void> openDeployKeyPage;
|
||||||
|
|
||||||
GitHostSetupSshKeyKnownProvider({
|
GitHostSetupSshKeyKnownProvider({
|
||||||
@required this.doneFunction,
|
@required this.doneFunction,
|
||||||
@ -83,8 +82,8 @@ class GitHostSetupSshKeyKnownProvider extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class GitHostSetupSshKeyUnknownProvider extends StatelessWidget {
|
class GitHostSetupSshKeyUnknownProvider extends StatelessWidget {
|
||||||
final Function doneFunction;
|
final Func0<void> doneFunction;
|
||||||
final CopyKeyFunction copyKeyFunction;
|
final Func1<BuildContext, void> copyKeyFunction;
|
||||||
final String publicKey;
|
final String publicKey;
|
||||||
|
|
||||||
GitHostSetupSshKeyUnknownProvider({
|
GitHostSetupSshKeyUnknownProvider({
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import 'package:dots_indicator/dots_indicator.dart';
|
import 'package:dots_indicator/dots_indicator.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:function_types/function_types.dart';
|
||||||
|
|
||||||
class OnBoardingScreen extends StatefulWidget {
|
class OnBoardingScreen extends StatefulWidget {
|
||||||
final Function onCompletedFunction;
|
final Func0<void> onCompletedFunction;
|
||||||
|
|
||||||
OnBoardingScreen(this.onCompletedFunction);
|
OnBoardingScreen(this.onCompletedFunction);
|
||||||
|
|
||||||
@ -119,7 +120,7 @@ class OnBoardingScreenState extends State<OnBoardingScreen> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class OnBoardingBottomButton extends StatelessWidget {
|
class OnBoardingBottomButton extends StatelessWidget {
|
||||||
final Function onPressed;
|
final Func0<void> onPressed;
|
||||||
final String text;
|
final String text;
|
||||||
|
|
||||||
OnBoardingBottomButton({
|
OnBoardingBottomButton({
|
||||||
|
@ -170,6 +170,13 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
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:
|
glob:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -22,6 +22,7 @@ dependencies:
|
|||||||
device_info: ^0.4.0+1
|
device_info: ^0.4.0+1
|
||||||
flutter_markdown: ^0.2.0
|
flutter_markdown: ^0.2.0
|
||||||
flutter_email_sender: ^2.0.2
|
flutter_email_sender: ^2.0.2
|
||||||
|
function_types: ^0.0.2
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_launcher_icons: "^0.7.0"
|
flutter_launcher_icons: "^0.7.0"
|
||||||
|
Reference in New Issue
Block a user