diff --git a/analysis_options.yaml b/analysis_options.yaml index e6d04eb..1492838 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -24,6 +24,8 @@ linter: rules: prefer_single_quotes: true always_use_package_imports: true + sort_constructors_first: true + sort_unnamed_constructors_first: true analyzer: exclude: diff --git a/lib/models/account.dart b/lib/models/account.dart index 7b61ba6..bf62ba6 100644 --- a/lib/models/account.dart +++ b/lib/models/account.dart @@ -3,15 +3,7 @@ import 'package:json_annotation/json_annotation.dart'; part 'account.g.dart'; @JsonSerializable(includeIfNull: false) -class Account { - String platform; - String domain; - String token; - String login; - String avatarUrl; - int? gitlabId; // For GitLab - String? appPassword; // For Bitbucket - String? accountId; // For Bitbucket +class Account { // For Bitbucket // equals(Account a) { // final uri = Uri.parse(domain); @@ -38,6 +30,14 @@ class Account { factory Account.fromJson(Map json) => _$AccountFromJson(json); + String platform; + String domain; + String token; + String login; + String avatarUrl; + int? gitlabId; // For GitLab + String? appPassword; // For Bitbucket + String? accountId; Map toJson() => _$AccountToJson(this); } diff --git a/lib/models/auth.dart b/lib/models/auth.dart index 1874eb0..f1390c5 100644 --- a/lib/models/auth.dart +++ b/lib/models/auth.dart @@ -35,16 +35,16 @@ class PlatformType { } class DataWithPage { - T data; - int cursor; - bool hasMore; - int total; DataWithPage({ required this.data, required this.cursor, required this.hasMore, required this.total, }); + T data; + int cursor; + bool hasMore; + int total; } class AuthModel with ChangeNotifier { diff --git a/lib/models/bitbucket.dart b/lib/models/bitbucket.dart index 093e448..1d78714 100644 --- a/lib/models/bitbucket.dart +++ b/lib/models/bitbucket.dart @@ -3,37 +3,39 @@ part 'bitbucket.g.dart'; @JsonSerializable(fieldRename: FieldRename.snake) class BbPagination { - String? next; - List values; BbPagination({required this.values}); factory BbPagination.fromJson(Map json) => _$BbPaginationFromJson(json); + String? next; + List values; } @JsonSerializable(fieldRename: FieldRename.snake) class BbRepoOwner { + BbRepoOwner(); + factory BbRepoOwner.fromJson(Map json) => + _$BbRepoOwnerFromJson(json); String? nickname; String? displayName; String? type; // user, team Map? links; String? get avatarUrl => links!['avatar']['href']; - BbRepoOwner(); - factory BbRepoOwner.fromJson(Map json) => - _$BbRepoOwnerFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class BbUser extends BbRepoOwner { + BbUser(); + factory BbUser.fromJson(Map json) => _$BbUserFromJson(json); String? username; bool? isStaff; DateTime? createdOn; String? accountId; - BbUser(); - factory BbUser.fromJson(Map json) => _$BbUserFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class BbRepo { + BbRepo(); + factory BbRepo.fromJson(Map json) => _$BbRepoFromJson(json); String? name; BbRepoOwner? owner; String? website; @@ -50,51 +52,52 @@ class BbRepo { Map? links; String get ownerLogin => fullName!.split('/')[0]; // owner has no username String? get avatarUrl => links!['avatar']['href']; - BbRepo(); - factory BbRepo.fromJson(Map json) => _$BbRepoFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class BbRepoMainbranch { - String? type; - String? name; BbRepoMainbranch(); factory BbRepoMainbranch.fromJson(Map json) => _$BbRepoMainbranchFromJson(json); + String? type; + String? name; } @JsonSerializable(fieldRename: FieldRename.snake) class BbTree { + BbTree({required this.type, required this.path}); + factory BbTree.fromJson(Map json) => _$BbTreeFromJson(json); String type; String path; int? size; Map? links; - BbTree({required this.type, required this.path}); - factory BbTree.fromJson(Map json) => _$BbTreeFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class BbCommit { + BbCommit(); + factory BbCommit.fromJson(Map json) => + _$BbCommitFromJson(json); String? message; DateTime? date; String? hash; BbCommitAuthor? author; - BbCommit(); - factory BbCommit.fromJson(Map json) => - _$BbCommitFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class BbCommitAuthor { - String? raw; - BbRepoOwner? user; BbCommitAuthor(); factory BbCommitAuthor.fromJson(Map json) => _$BbCommitAuthorFromJson(json); + String? raw; + BbRepoOwner? user; } @JsonSerializable(fieldRename: FieldRename.snake) class BbIssues { + BbIssues(); + factory BbIssues.fromJson(Map json) => + _$BbIssuesFromJson(json); String? priority; String? state; BbRepo? repository; @@ -103,50 +106,47 @@ class BbIssues { DateTime? createdOn; Map? links; String? get issueLink => links!['self']['href']; - BbIssues(); - factory BbIssues.fromJson(Map json) => - _$BbIssuesFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class BbPulls { + BbPulls(); + factory BbPulls.fromJson(Map json) => + _$BbPullsFromJson(json); String? description; BbRepoOwner? author; String? title; Map? links; String? get pullRequestLink => links!['self']['href']; DateTime? createdOn; - BbPulls(); - factory BbPulls.fromJson(Map json) => - _$BbPullsFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class BbCommentContent { - String? raw; - String? markup; - String? html; BbCommentContent(); factory BbCommentContent.fromJson(Map json) => _$BbCommentContentFromJson(json); + String? raw; + String? markup; + String? html; } @JsonSerializable(fieldRename: FieldRename.snake) class BbComment { + BbComment(); + factory BbComment.fromJson(Map json) => + _$BbCommentFromJson(json); String? createdOn; String? updatedOn; BbCommentContent? content; BbRepoOwner? user; - BbComment(); - factory BbComment.fromJson(Map json) => - _$BbCommentFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class BbBranch { - String? name; - String? type; BbBranch(); factory BbBranch.fromJson(Map json) => _$BbBranchFromJson(json); + String? name; + String? type; } diff --git a/lib/models/gitea.dart b/lib/models/gitea.dart index 331a3e7..bfb17d0 100644 --- a/lib/models/gitea.dart +++ b/lib/models/gitea.dart @@ -4,18 +4,21 @@ part 'gitea.g.dart'; @JsonSerializable(fieldRename: FieldRename.snake) class GiteaUser { + GiteaUser(); + factory GiteaUser.fromJson(Map json) => + _$GiteaUserFromJson(json); int? id; String? login; String? fullName; String? avatarUrl; DateTime? created; - GiteaUser(); - factory GiteaUser.fromJson(Map json) => - _$GiteaUserFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteaOrg { + GiteaOrg(); + factory GiteaOrg.fromJson(Map json) => + _$GiteaOrgFromJson(json); int? id; String? username; String? fullName; @@ -23,13 +26,13 @@ class GiteaOrg { String? description; String? website; String? location; - GiteaOrg(); - factory GiteaOrg.fromJson(Map json) => - _$GiteaOrgFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteaRepository { + GiteaRepository(); + factory GiteaRepository.fromJson(Map json) => + _$GiteaRepositoryFromJson(json); int? id; GiteaUser? owner; String? name; @@ -41,34 +44,34 @@ class GiteaRepository { int? size; int? openIssuesCount; int? openPrCounter; - GiteaRepository(); - factory GiteaRepository.fromJson(Map json) => - _$GiteaRepositoryFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteaTree { + GiteaTree({required this.type, required this.name}); + factory GiteaTree.fromJson(Map json) => + _$GiteaTreeFromJson(json); String type; String name; String? path; int? size; String? downloadUrl; - GiteaTree({required this.type, required this.name}); - factory GiteaTree.fromJson(Map json) => - _$GiteaTreeFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteaBlob extends GiteaTree { - String? content; GiteaBlob({required String type, required String name}) : super(name: name, type: type); factory GiteaBlob.fromJson(Map json) => _$GiteaBlobFromJson(json); + String? content; } @JsonSerializable(fieldRename: FieldRename.snake) class GiteaCommit { + GiteaCommit(); + factory GiteaCommit.fromJson(Map json) => + _$GiteaCommitFromJson(json); int? number; GiteaUser? author; String? title; @@ -76,33 +79,33 @@ class GiteaCommit { GiteaCommitDetail? commit; String? sha; String? htmlUrl; - GiteaCommit(); - factory GiteaCommit.fromJson(Map json) => - _$GiteaCommitFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteaCommitDetail { - String? message; - GiteaCommitAuthor? author; - GiteaCommitAuthor? committer; GiteaCommitDetail(); factory GiteaCommitDetail.fromJson(Map json) => _$GiteaCommitDetailFromJson(json); + String? message; + GiteaCommitAuthor? author; + GiteaCommitAuthor? committer; } @JsonSerializable(fieldRename: FieldRename.snake) class GiteaCommitAuthor { - String? name; - String? email; - DateTime? date; GiteaCommitAuthor(); factory GiteaCommitAuthor.fromJson(Map json) => _$GiteaCommitAuthorFromJson(json); + String? name; + String? email; + DateTime? date; } @JsonSerializable(fieldRename: FieldRename.snake) class GiteaIssue { + GiteaIssue(); + factory GiteaIssue.fromJson(Map json) => + _$GiteaIssueFromJson(json); String? title; String? body; int? number; @@ -112,31 +115,31 @@ class GiteaIssue { String? state; String? htmlUrl; List? labels; - GiteaIssue(); - factory GiteaIssue.fromJson(Map json) => - _$GiteaIssueFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteaLabel { - String? color; - String? name; GiteaLabel(); factory GiteaLabel.fromJson(Map json) => _$GiteaLabelFromJson(json); + String? color; + String? name; } @JsonSerializable(fieldRename: FieldRename.snake) class GiteaHeatmapItem { - int? timestamp; - int? contributions; GiteaHeatmapItem(); factory GiteaHeatmapItem.fromJson(Map json) => _$GiteaHeatmapItemFromJson(json); + int? timestamp; + int? contributions; } @JsonSerializable(fieldRename: FieldRename.snake) class GiteaComment { + GiteaComment(); + factory GiteaComment.fromJson(Map json) => + _$GiteaCommentFromJson(json); String? body; DateTime? createdAt; String? htmlUrl; @@ -144,7 +147,4 @@ class GiteaComment { DateTime? updatedAt; int? id; GiteaUser? user; - GiteaComment(); - factory GiteaComment.fromJson(Map json) => - _$GiteaCommentFromJson(json); } diff --git a/lib/models/gitee.dart b/lib/models/gitee.dart index 2b7bd8e..b1cf9e2 100644 --- a/lib/models/gitee.dart +++ b/lib/models/gitee.dart @@ -4,6 +4,9 @@ part 'gitee.g.dart'; @JsonSerializable(fieldRename: FieldRename.snake) class GiteeUser { + GiteeUser(); + factory GiteeUser.fromJson(Map json) => + _$GiteeUserFromJson(json); String? login; String? avatarUrl; String? name; @@ -16,24 +19,24 @@ class GiteeUser { int? stared; int? watched; DateTime? createdAt; - GiteeUser(); - factory GiteeUser.fromJson(Map json) => - _$GiteeUserFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeListUser { + GiteeListUser(); + factory GiteeListUser.fromJson(Map json) => + _$GiteeListUserFromJson(json); String? login; String? avatarUrl; String? name; String? htmlUrl; - GiteeListUser(); - factory GiteeListUser.fromJson(Map json) => - _$GiteeListUserFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeRepo { + GiteeRepo(); + factory GiteeRepo.fromJson(Map json) => + _$GiteeRepoFromJson(json); GiteeRepoNamespace? namespace; GiteeRepoOwner? owner; String? path; @@ -51,90 +54,90 @@ class GiteeRepo { int? openIssuesCount; bool? pullRequestsEnabled; String? defaultBranch; - GiteeRepo(); - factory GiteeRepo.fromJson(Map json) => - _$GiteeRepoFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeRepoOwner { - String? login; - String? avatarUrl; GiteeRepoOwner(); factory GiteeRepoOwner.fromJson(Map json) => _$GiteeRepoOwnerFromJson(json); + String? login; + String? avatarUrl; } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeRepoNamespace { - String? path; GiteeRepoNamespace(); factory GiteeRepoNamespace.fromJson(Map json) => _$GiteeRepoNamespaceFromJson(json); + String? path; } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeCommit { + GiteeCommit(); + factory GiteeCommit.fromJson(Map json) => + _$GiteeCommitFromJson(json); GiteeUser? author; GiteeCommitDetail? commit; String? sha; String? htmlUrl; List? files; - GiteeCommit(); - factory GiteeCommit.fromJson(Map json) => - _$GiteeCommitFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeCommitDetail { - String? message; - GiteeCommitAuthor? author; - GiteeCommitAuthor? committer; GiteeCommitDetail(); factory GiteeCommitDetail.fromJson(Map json) => _$GiteeCommitDetailFromJson(json); + String? message; + GiteeCommitAuthor? author; + GiteeCommitAuthor? committer; } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeCommitAuthor { - String? name; - String? email; - DateTime? date; GiteeCommitAuthor(); factory GiteeCommitAuthor.fromJson(Map json) => _$GiteeCommitAuthorFromJson(json); + String? name; + String? email; + DateTime? date; } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeTreeItem { + GiteeTreeItem({required this.path, required this.type}); + factory GiteeTreeItem.fromJson(Map json) => + _$GiteeTreeItemFromJson(json); String path; String type; String? sha; int? size; - GiteeTreeItem({required this.path, required this.type}); - factory GiteeTreeItem.fromJson(Map json) => - _$GiteeTreeItemFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeBlob { - String? content; GiteeBlob(); factory GiteeBlob.fromJson(Map json) => _$GiteeBlobFromJson(json); + String? content; } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeLabel { - String? color; - String? name; GiteeLabel(); factory GiteeLabel.fromJson(Map json) => _$GiteeLabelFromJson(json); + String? color; + String? name; } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeIssue { + GiteeIssue(); + factory GiteeIssue.fromJson(Map json) => + _$GiteeIssueFromJson(json); int? comments; String? commentsUrl; String? createdAt; @@ -149,13 +152,13 @@ class GiteeIssue { String? number; List? labels; int? id; - GiteeIssue(); - factory GiteeIssue.fromJson(Map json) => - _$GiteeIssueFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteePull { + GiteePull(); + factory GiteePull.fromJson(Map json) => + _$GiteePullFromJson(json); String? commentsUrl; String? createdAt; String? htmlUrl; @@ -168,34 +171,34 @@ class GiteePull { List? labels; int? number; int? id; - GiteePull(); - factory GiteePull.fromJson(Map json) => - _$GiteePullFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeComment { + GiteeComment(); + factory GiteeComment.fromJson(Map json) => + _$GiteeCommentFromJson(json); int? id; String? body; String? createdAt; GiteeRepoOwner? user; - GiteeComment(); - factory GiteeComment.fromJson(Map json) => - _$GiteeCommentFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteePatch { - String? diff; GiteePatch(); factory GiteePatch.fromJson(Map json) => _$GiteePatchFromJson(json); + String? diff; } // Two different classes because of variable type mismatch // for additions, deletions, patch @JsonSerializable(fieldRename: FieldRename.snake) class GiteePullFile { + GiteePullFile(); + factory GiteePullFile.fromJson(Map json) => + _$GiteePullFileFromJson(json); String? additions; String? deletions; String? blobUrl; @@ -203,13 +206,13 @@ class GiteePullFile { String? sha; String? status; GiteePatch? patch; - GiteePullFile(); - factory GiteePullFile.fromJson(Map json) => - _$GiteePullFileFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeCommitFile { + GiteeCommitFile(); + factory GiteeCommitFile.fromJson(Map json) => + _$GiteeCommitFileFromJson(json); int? additions; int? deletions; int? changes; @@ -218,24 +221,21 @@ class GiteeCommitFile { String? sha; String? status; String? patch; - GiteeCommitFile(); - factory GiteeCommitFile.fromJson(Map json) => - _$GiteeCommitFileFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeContributor { - String? name; - int? contributions; GiteeContributor(); factory GiteeContributor.fromJson(Map json) => _$GiteeContributorFromJson(json); + String? name; + int? contributions; } @JsonSerializable(fieldRename: FieldRename.snake) class GiteeBranch { - String? name; GiteeBranch(); factory GiteeBranch.fromJson(Map json) => _$GiteeBranchFromJson(json); + String? name; } diff --git a/lib/models/github.dart b/lib/models/github.dart index d582e6c..3fccc9d 100644 --- a/lib/models/github.dart +++ b/lib/models/github.dart @@ -6,6 +6,11 @@ part 'github.g.dart'; @JsonSerializable(fieldRename: FieldRename.snake) class GithubEvent { + + GithubEvent(); + + factory GithubEvent.fromJson(Map json) => + _$GithubEventFromJson(json); GithubEventUser? actor; String? type; GithubEventRepo? repo; @@ -22,36 +27,35 @@ class GithubEvent { _repo ??= parseRepositoryFullName(repo!.name!); return _repo!.item2; } - - GithubEvent(); - - factory GithubEvent.fromJson(Map json) => - _$GithubEventFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GithubEventUser { - String? login; - String? avatarUrl; GithubEventUser(); factory GithubEventUser.fromJson(Map json) => _$GithubEventUserFromJson(json); + String? login; + String? avatarUrl; } @JsonSerializable(fieldRename: FieldRename.snake) class GithubEventRepo { - String? name; GithubEventRepo(); factory GithubEventRepo.fromJson(Map json) => _$GithubEventRepoFromJson(json); + String? name; } @JsonSerializable(fieldRename: FieldRename.snake) class GithubEventPayload { + GithubEventPayload(); + + factory GithubEventPayload.fromJson(Map json) => + _$GithubEventPayloadFromJson(json); GithubEventIssue? issue; GithubEventIssue? pullRequest; GithubEventComment? comment; @@ -72,14 +76,15 @@ class GithubEventPayload { GithubCheckrunItem? checkRun; GithubCheckSuiteItem? checkSuite; GithubContentReferenceItem? contentReference; - GithubEventPayload(); - - factory GithubEventPayload.fromJson(Map json) => - _$GithubEventPayloadFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GithubEventIssue { + + GithubEventIssue(); + + factory GithubEventIssue.fromJson(Map json) => + _$GithubEventIssueFromJson(json); String? title; GithubEventUser? user; int? number; @@ -91,51 +96,51 @@ class GithubEventIssue { DateTime? createdAt; bool get isPullRequestComment => pullRequest != null; - - GithubEventIssue(); - - factory GithubEventIssue.fromJson(Map json) => - _$GithubEventIssueFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GithubEventComment { - String? body; - GithubEventUser? user; - String? commitId; - String? htmlUrl; GithubEventComment(); factory GithubEventComment.fromJson(Map json) => _$GithubEventCommentFromJson(json); + String? body; + GithubEventUser? user; + String? commitId; + String? htmlUrl; } @JsonSerializable(fieldRename: FieldRename.snake) class GithubEventCommit { - String? sha; - String? message; GithubEventCommit(); factory GithubEventCommit.fromJson(Map json) => _$GithubEventCommitFromJson(json); + String? sha; + String? message; } @JsonSerializable(fieldRename: FieldRename.snake) class GithubEventRelease { - String? htmlUrl; - String? tagName; GithubEventRelease(); factory GithubEventRelease.fromJson(Map json) => _$GithubEventReleaseFromJson(json); + String? htmlUrl; + String? tagName; } // Notification @JsonSerializable(fieldRename: FieldRename.snake) class GithubNotificationItem { + + GithubNotificationItem(); + + factory GithubNotificationItem.fromJson(Map json) => + _$GithubNotificationItemFromJson(json); String? id; GithubNotificationItemSubject? subject; DateTime? updatedAt; @@ -146,15 +151,15 @@ class GithubNotificationItem { String? state; String get key => '_$hashCode'; - - GithubNotificationItem(); - - factory GithubNotificationItem.fromJson(Map json) => - _$GithubNotificationItemFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GithubNotificationItemSubject { + + GithubNotificationItemSubject(); + + factory GithubNotificationItemSubject.fromJson(Map json) => + _$GithubNotificationItemSubjectFromJson(json); String? title; String? type; String? url; @@ -164,15 +169,15 @@ class GithubNotificationItemSubject { _number ??= int.parse(url?.split('/').last ?? '0'); return _number; } - - GithubNotificationItemSubject(); - - factory GithubNotificationItemSubject.fromJson(Map json) => - _$GithubNotificationItemSubjectFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GithubNotificationItemRepo { + + GithubNotificationItemRepo(); + + factory GithubNotificationItemRepo.fromJson(Map json) => + _$GithubNotificationItemRepoFromJson(json); String? fullName; Tuple2? _repo; @@ -185,137 +190,132 @@ class GithubNotificationItemRepo { _repo ??= parseRepositoryFullName(fullName!); return _repo!.item2; } - - GithubNotificationItemRepo(); - - factory GithubNotificationItemRepo.fromJson(Map json) => - _$GithubNotificationItemRepoFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GithubTreeItem { + GithubTreeItem(); + factory GithubTreeItem.fromJson(Map json) => + _$GithubTreeItemFromJson(json); String? name; String? path; int? size; String? type; String? downloadUrl; String? content; - GithubTreeItem(); - factory GithubTreeItem.fromJson(Map json) => - _$GithubTreeItemFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GithubPagesItem { - String? pageName; - String? title; - String? action; GithubPagesItem(); factory GithubPagesItem.fromJson(Map json) => _$GithubPagesItemFromJson(json); + String? pageName; + String? title; + String? action; } @JsonSerializable(fieldRename: FieldRename.snake) class GithubSecurityItem { - String? summary; - String? description; - String? severity; GithubSecurityItem(); factory GithubSecurityItem.fromJson(Map json) => _$GithubSecurityItemFromJson(json); + String? summary; + String? description; + String? severity; } @JsonSerializable(fieldRename: FieldRename.snake) class GithubAlertItem { - String? affectedPackageName; - String? affectedRange; GithubAlertItem(); factory GithubAlertItem.fromJson(Map json) => _$GithubAlertItemFromJson(json); + String? affectedPackageName; + String? affectedRange; } @JsonSerializable(fieldRename: FieldRename.snake) class GithubProjectItem { + GithubProjectItem(); + factory GithubProjectItem.fromJson(Map json) => + _$GithubProjectItemFromJson(json); String? name; String? state; String? body; String? htmlUrl; - GithubProjectItem(); - factory GithubProjectItem.fromJson(Map json) => - _$GithubProjectItemFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GithubProjectColumnItem { - String? htmlUrl; - String? columnsUrl; - String? name; GithubProjectColumnItem(); factory GithubProjectColumnItem.fromJson(Map json) => _$GithubProjectColumnItemFromJson(json); + String? htmlUrl; + String? columnsUrl; + String? name; } @JsonSerializable(fieldRename: FieldRename.snake) class GithubInstallationRepositoriesItem { - List? repositoriesAdded, repositoriesRemoved; - String? repositoriesSelection; - int? id; GithubInstallationRepositoriesItem(); factory GithubInstallationRepositoriesItem.fromJson( Map json) => _$GithubInstallationRepositoriesItemFromJson(json); + List? repositoriesAdded, repositoriesRemoved; + String? repositoriesSelection; + int? id; } @JsonSerializable(fieldRename: FieldRename.snake) class GithubCheckrunItem { - String? status; - String? name; - int? id; GithubCheckrunItem(); factory GithubCheckrunItem.fromJson(Map json) => _$GithubCheckrunItemFromJson(json); + String? status; + String? name; + int? id; } @JsonSerializable(fieldRename: FieldRename.snake) class GithubCheckSuiteItem { - String? status; - String? conclusion; GithubCheckSuiteItem(); factory GithubCheckSuiteItem.fromJson(Map json) => _$GithubCheckSuiteItemFromJson(json); + String? status; + String? conclusion; } @JsonSerializable(fieldRename: FieldRename.snake) class GithubContentReferenceItem { - int? id; - String? reference; GithubContentReferenceItem(); factory GithubContentReferenceItem.fromJson(Map json) => _$GithubContentReferenceItemFromJson(json); + int? id; + String? reference; } @JsonSerializable(fieldRename: FieldRename.snake) class GithubContributorItem { + GithubContributorItem(); + factory GithubContributorItem.fromJson(Map json) => + _$GithubContributorItemFromJson(json); int? id; String? login; String? avatarUrl; String? htmlUrl; int? contributions; - GithubContributorItem(); - factory GithubContributorItem.fromJson(Map json) => - _$GithubContributorItemFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GithubUserOrganizationItem { + GithubUserOrganizationItem(); + factory GithubUserOrganizationItem.fromJson(Map json) => + _$GithubUserOrganizationItemFromJson(json); int? id; String? login; String? avatarUrl; String? description; String? url; - GithubUserOrganizationItem(); - factory GithubUserOrganizationItem.fromJson(Map json) => - _$GithubUserOrganizationItemFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) @@ -329,6 +329,9 @@ class GistFiles { this.truncated, this.content, }); + + factory GistFiles.fromJson(Map json) => + _$GistFilesFromJson(json); String? filename; int? size; String? rawUrl; @@ -336,13 +339,14 @@ class GistFiles { String? language; bool? truncated; String? content; - - factory GistFiles.fromJson(Map json) => - _$GistFilesFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GithubGistsItem { + + GithubGistsItem(); + factory GithubGistsItem.fromJson(Map json) => + _$GithubGistsItemFromJson(json); String? id; String? description; bool? public; @@ -358,32 +362,28 @@ class GithubGistsItem { DateTime? createdAt; DateTime? updatedAt; - - GithubGistsItem(); - factory GithubGistsItem.fromJson(Map json) => - _$GithubGistsItemFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GithubFilesItem { + GithubFilesItem(); + factory GithubFilesItem.fromJson(Map json) => + _$GithubFilesItemFromJson(json); String? filename; String? status; int? additions; int? deletions; int? changes; String? patch; - GithubFilesItem(); - factory GithubFilesItem.fromJson(Map json) => - _$GithubFilesItemFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GithubComparisonItem { + GithubComparisonItem(); + factory GithubComparisonItem.fromJson(Map json) => + _$GithubComparisonItemFromJson(json); List? files; String? status; int? aheadBy; int? behindBy; - GithubComparisonItem(); - factory GithubComparisonItem.fromJson(Map json) => - _$GithubComparisonItemFromJson(json); } diff --git a/lib/models/gitlab.dart b/lib/models/gitlab.dart index a42428c..304bd31 100644 --- a/lib/models/gitlab.dart +++ b/lib/models/gitlab.dart @@ -4,6 +4,9 @@ part 'gitlab.g.dart'; @JsonSerializable(fieldRename: FieldRename.snake) class GitlabUser { + GitlabUser(); + factory GitlabUser.fromJson(Map json) => + _$GitlabUserFromJson(json); int? id; String? username; String? name; @@ -11,70 +14,70 @@ class GitlabUser { String? bio; DateTime? createdAt; int? accessLevel; - GitlabUser(); - factory GitlabUser.fromJson(Map json) => - _$GitlabUserFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabGroup { + GitlabGroup(); + factory GitlabGroup.fromJson(Map json) => + _$GitlabGroupFromJson(json); int? id; String? path; String? name; String? avatarUrl; String? description; List? projects; - GitlabGroup(); - factory GitlabGroup.fromJson(Map json) => - _$GitlabGroupFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabTodoProject { - String? pathWithNamespace; GitlabTodoProject(); factory GitlabTodoProject.fromJson(Map json) => _$GitlabTodoProjectFromJson(json); + String? pathWithNamespace; } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabTodo { + GitlabTodo(); + factory GitlabTodo.fromJson(Map json) => + _$GitlabTodoFromJson(json); GitlabUser? author; GitlabTodoProject? project; String? actionName; String? targetType; GitlabTodoTarget? target; - GitlabTodo(); - factory GitlabTodo.fromJson(Map json) => - _$GitlabTodoFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabTodoTarget { + GitlabTodoTarget(); + factory GitlabTodoTarget.fromJson(Map json) => + _$GitlabTodoTargetFromJson(json); int? iid; int? projectId; String? title; GitlabUser? author; String? description; DateTime? createdAt; - GitlabTodoTarget(); - factory GitlabTodoTarget.fromJson(Map json) => - _$GitlabTodoTargetFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabIssueNote { + GitlabIssueNote(); + factory GitlabIssueNote.fromJson(Map json) => + _$GitlabIssueNoteFromJson(json); GitlabUser? author; String? body; bool? system; DateTime? createdAt; - GitlabIssueNote(); - factory GitlabIssueNote.fromJson(Map json) => - _$GitlabIssueNoteFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabProject { + GitlabProject(); + factory GitlabProject.fromJson(Map json) => + _$GitlabProjectFromJson(json); int? id; String? name; String? avatarUrl; @@ -93,103 +96,103 @@ class GitlabProject { DateTime? lastActivityAt; DateTime? createdAt; String? defaultBranch; - GitlabProject(); - factory GitlabProject.fromJson(Map json) => - _$GitlabProjectFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabProjectBadge { - String? renderedImageUrl; GitlabProjectBadge(); factory GitlabProjectBadge.fromJson(Map json) => _$GitlabProjectBadgeFromJson(json); + String? renderedImageUrl; } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabProjectStatistics { - int? commitCount; - int? repositorySize; GitlabProjectStatistics(); factory GitlabProjectStatistics.fromJson(Map json) => _$GitlabProjectStatisticsFromJson(json); + int? commitCount; + int? repositorySize; } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabProjectNamespace { + GitlabProjectNamespace(); + factory GitlabProjectNamespace.fromJson(Map json) => + _$GitlabProjectNamespaceFromJson(json); int? id; String? name; String? path; String? kind; - GitlabProjectNamespace(); - factory GitlabProjectNamespace.fromJson(Map json) => - _$GitlabProjectNamespaceFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabTreeItem { - String type; - String path; - String name; GitlabTreeItem({required this.type, required this.path, required this.name}); factory GitlabTreeItem.fromJson(Map json) => _$GitlabTreeItemFromJson(json); + String type; + String path; + String name; } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabBlob { - String? content; GitlabBlob(); factory GitlabBlob.fromJson(Map json) => _$GitlabBlobFromJson(json); + String? content; } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabEvent { + GitlabEvent(); + factory GitlabEvent.fromJson(Map json) => + _$GitlabEventFromJson(json); GitlabUser? author; String? actionName; String? targetType; GitlabEventNote? note; - GitlabEvent(); - factory GitlabEvent.fromJson(Map json) => - _$GitlabEventFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabEventNote { - String? body; - String? noteableType; - int? noteableIid; GitlabEventNote(); factory GitlabEventNote.fromJson(Map json) => _$GitlabEventNoteFromJson(json); + String? body; + String? noteableType; + int? noteableIid; } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabCommit { + GitlabCommit(); + factory GitlabCommit.fromJson(Map json) => + _$GitlabCommitFromJson(json); String? id; String? shortId; String? title; DateTime? createdAt; String? authorName; String? message; - GitlabCommit(); - factory GitlabCommit.fromJson(Map json) => - _$GitlabCommitFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabDiff { - String? diff; - String? newPath; - String? oldPath; GitlabDiff(); factory GitlabDiff.fromJson(Map json) => _$GitlabDiffFromJson(json); + String? diff; + String? newPath; + String? oldPath; } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabIssue { + GitlabIssue(); + factory GitlabIssue.fromJson(Map json) => + _$GitlabIssueFromJson(json); String? title; int? iid; int? projectId; @@ -197,25 +200,22 @@ class GitlabIssue { int? userNotesCount; DateTime? updatedAt; List? labels; - GitlabIssue(); - factory GitlabIssue.fromJson(Map json) => - _$GitlabIssueFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabStarrer { - DateTime? starredSince; - GitlabUser? user; GitlabStarrer(); factory GitlabStarrer.fromJson(Map json) => _$GitlabStarrerFromJson(json); + DateTime? starredSince; + GitlabUser? user; } @JsonSerializable(fieldRename: FieldRename.snake) class GitlabBranch { - String? name; - bool? merged; GitlabBranch(); factory GitlabBranch.fromJson(Map json) => _$GitlabBranchFromJson(json); + String? name; + bool? merged; } diff --git a/lib/models/gogs.dart b/lib/models/gogs.dart index ec0877e..5d91e3b 100644 --- a/lib/models/gogs.dart +++ b/lib/models/gogs.dart @@ -4,18 +4,21 @@ part 'gogs.g.dart'; @JsonSerializable(fieldRename: FieldRename.snake) class GogsUser { + GogsUser(); + factory GogsUser.fromJson(Map json) => + _$GogsUserFromJson(json); int? id; String? username; String? fullName; String? avatarUrl; String? email; - GogsUser(); - factory GogsUser.fromJson(Map json) => - _$GogsUserFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GogsRepository { + GogsRepository(); + factory GogsRepository.fromJson(Map json) => + _$GogsRepositoryFromJson(json); int? id; String? fullName; bool? private; @@ -29,13 +32,13 @@ class GogsRepository { int? forksCount; String? website; int? watchersCount; - GogsRepository(); - factory GogsRepository.fromJson(Map json) => - _$GogsRepositoryFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GogsOrg { + GogsOrg(); + factory GogsOrg.fromJson(Map json) => + _$GogsOrgFromJson(json); int? id; String? username; String? fullName; @@ -43,73 +46,73 @@ class GogsOrg { String? description; String? location; String? website; - GogsOrg(); - factory GogsOrg.fromJson(Map json) => - _$GogsOrgFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GogsTree { + GogsTree({required this.type, required this.name}); + factory GogsTree.fromJson(Map json) => + _$GogsTreeFromJson(json); String type; String name; String? path; int? size; String? downloadUrl; - GogsTree({required this.type, required this.name}); - factory GogsTree.fromJson(Map json) => - _$GogsTreeFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GogsBlob extends GogsTree { - String? content; GogsBlob({required String type, required String name}) : super(name: name, type: type); factory GogsBlob.fromJson(Map json) => _$GogsBlobFromJson(json); + String? content; } @JsonSerializable(fieldRename: FieldRename.snake) class GogsBranch { - String? name; GogsBranch(); factory GogsBranch.fromJson(Map json) => _$GogsBranchFromJson(json); + String? name; } @JsonSerializable(fieldRename: FieldRename.snake) class GogsCommit { + GogsCommit(); + factory GogsCommit.fromJson(Map json) => + _$GogsCommitFromJson(json); GogsUser? author; GogsCommitDetail? commit; String? sha; String? htmlUrl; - GogsCommit(); - factory GogsCommit.fromJson(Map json) => - _$GogsCommitFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GogsCommitDetail { - String? message; - GogsCommitAuthor? author; - GogsCommitAuthor? committer; GogsCommitDetail(); factory GogsCommitDetail.fromJson(Map json) => _$GogsCommitDetailFromJson(json); + String? message; + GogsCommitAuthor? author; + GogsCommitAuthor? committer; } @JsonSerializable(fieldRename: FieldRename.snake) class GogsCommitAuthor { - String? name; - String? email; - DateTime? date; GogsCommitAuthor(); factory GogsCommitAuthor.fromJson(Map json) => _$GogsCommitAuthorFromJson(json); + String? name; + String? email; + DateTime? date; } @JsonSerializable(fieldRename: FieldRename.snake) class GogsIssue { + GogsIssue(); + factory GogsIssue.fromJson(Map json) => + _$GogsIssueFromJson(json); int? number; String? state; String? title; @@ -119,16 +122,13 @@ class GogsIssue { DateTime? createdAt; DateTime? updatedAt; int? comments; - GogsIssue(); - factory GogsIssue.fromJson(Map json) => - _$GogsIssueFromJson(json); } @JsonSerializable(fieldRename: FieldRename.snake) class GogsLabel { - String? name; - String? color; GogsLabel(); factory GogsLabel.fromJson(Map json) => _$GogsLabelFromJson(json); + String? name; + String? color; } diff --git a/lib/models/notification.dart b/lib/models/notification.dart index 4d92df1..5d676a0 100644 --- a/lib/models/notification.dart +++ b/lib/models/notification.dart @@ -5,6 +5,8 @@ import 'package:tuple/tuple.dart'; import 'package:git_touch/utils/utils.dart'; class NotificationGroup { + + NotificationGroup(this.fullName); String? fullName; List items = []; @@ -20,8 +22,6 @@ class NotificationGroup { } String get key => '_$hashCode'; - - NotificationGroup(this.fullName); } class NotificationModel with ChangeNotifier { diff --git a/lib/models/theme.dart b/lib/models/theme.dart index ce41669..ce9bb3a 100644 --- a/lib/models/theme.dart +++ b/lib/models/theme.dart @@ -30,16 +30,12 @@ class AppMarkdownType { } class PickerItem { + PickerItem(this.value, {required this.text}); final T value; final String? text; - PickerItem(this.value, {required this.text}); } class PickerGroupItem { - final T value; - final List> items; - final Function(T value)? onChange; - final Function(T value)? onClose; PickerGroupItem({ required this.value, @@ -47,18 +43,21 @@ class PickerGroupItem { this.onChange, this.onClose, }); + final T value; + final List> items; + final Function(T value)? onChange; + final Function(T value)? onClose; } class SelectorItem { + SelectorItem({required this.value, required this.text}); T value; String text; - SelectorItem({required this.value, required this.text}); } // No animation. For replacing route // TODO: Go back class StaticRoute extends PageRouteBuilder { - final WidgetBuilder? builder; StaticRoute({this.builder}) : super( pageBuilder: (BuildContext context, Animation animation, @@ -72,16 +71,10 @@ class StaticRoute extends PageRouteBuilder { return child; }, ); + final WidgetBuilder? builder; } class Palette { - final Color primary; - final Color text; - final Color secondaryText; - final Color tertiaryText; - final Color background; - final Color grayBackground; - final Color border; const Palette({ required this.primary, @@ -92,6 +85,13 @@ class Palette { required this.grayBackground, required this.border, }); + final Color primary; + final Color text; + final Color secondaryText; + final Color tertiaryText; + final Color background; + final Color grayBackground; + final Color border; } class ThemeModel with ChangeNotifier { diff --git a/lib/scaffolds/common.dart b/lib/scaffolds/common.dart index 0bf8c7c..8875b7b 100644 --- a/lib/scaffolds/common.dart +++ b/lib/scaffolds/common.dart @@ -3,15 +3,15 @@ import 'package:git_touch/models/theme.dart'; import 'package:provider/provider.dart'; class CommonScaffold extends StatelessWidget { - final Widget title; - final Widget body; - final Widget? action; const CommonScaffold({ required this.title, required this.body, this.action, }); + final Widget title; + final Widget body; + final Widget? action; @override Widget build(BuildContext context) { diff --git a/lib/scaffolds/list_stateful.dart b/lib/scaffolds/list_stateful.dart index c10f79b..eab2bf2 100644 --- a/lib/scaffolds/list_stateful.dart +++ b/lib/scaffolds/list_stateful.dart @@ -9,10 +9,6 @@ export 'package:git_touch/utils/utils.dart'; // This is a scaffold for infinite scroll screens class ListStatefulScaffold extends StatefulWidget { - final Widget title; - final Widget Function()? actionBuilder; - final Widget Function(T payload) itemBuilder; - final Future> Function(K? cursor) fetch; const ListStatefulScaffold({ required this.title, @@ -20,6 +16,10 @@ class ListStatefulScaffold extends StatefulWidget { required this.itemBuilder, this.actionBuilder, }); + final Widget title; + final Widget Function()? actionBuilder; + final Widget Function(T payload) itemBuilder; + final Future> Function(K? cursor) fetch; @override _ListStatefulScaffoldState createState() => diff --git a/lib/scaffolds/long_list.dart b/lib/scaffolds/long_list.dart index 02cb425..daf814d 100644 --- a/lib/scaffolds/long_list.dart +++ b/lib/scaffolds/long_list.dart @@ -8,11 +8,6 @@ import 'package:git_touch/widgets/link.dart'; import 'package:git_touch/widgets/loading.dart'; class LongListPayload { - T header; - int totalCount; - String? cursor; - List leadingItems; - List? trailingItems; LongListPayload({ required this.header, @@ -21,6 +16,11 @@ class LongListPayload { required this.leadingItems, this.trailingItems, }); + T header; + int totalCount; + String? cursor; + List leadingItems; + List? trailingItems; } // This is a scaffold for issue and pull request @@ -28,12 +28,6 @@ class LongListPayload { // We should load leading and trailing items at first fetching, and do load more in the middle // e.g. https://github.com/reactjs/rfcs/pull/68 class LongListStatefulScaffold extends StatefulWidget { - final Widget title; - final Widget Function(T t)? trailingBuilder; - final Widget Function(T t) headerBuilder; - final Widget Function(K k) itemBuilder; - final Future> Function() onRefresh; - final Future> Function(String? cursor) onLoadMore; const LongListStatefulScaffold({ required this.title, @@ -43,6 +37,12 @@ class LongListStatefulScaffold extends StatefulWidget { required this.onRefresh, required this.onLoadMore, }); + final Widget title; + final Widget Function(T t)? trailingBuilder; + final Widget Function(T t) headerBuilder; + final Widget Function(K k) itemBuilder; + final Future> Function() onRefresh; + final Future> Function(String? cursor) onLoadMore; @override _LongListStatefulScaffoldState createState() => diff --git a/lib/scaffolds/refresh_stateful.dart b/lib/scaffolds/refresh_stateful.dart index 672bd79..7fdd6dc 100644 --- a/lib/scaffolds/refresh_stateful.dart +++ b/lib/scaffolds/refresh_stateful.dart @@ -4,13 +4,6 @@ import 'package:git_touch/scaffolds/common.dart'; import 'package:git_touch/scaffolds/utils.dart'; class RefreshStatefulScaffold extends StatefulWidget { - final Widget title; - final Widget? Function(T data, void Function(T newData) setData) bodyBuilder; - final Future Function() fetch; - final Widget? Function(T data, void Function(T newData) setData)? - actionBuilder; - final Widget? action; - final canRefresh; const RefreshStatefulScaffold({ required this.title, @@ -20,6 +13,13 @@ class RefreshStatefulScaffold extends StatefulWidget { this.action, this.canRefresh = true, }) : assert(actionBuilder == null || action == null); + final Widget title; + final Widget? Function(T data, void Function(T newData) setData) bodyBuilder; + final Future Function() fetch; + final Widget? Function(T data, void Function(T newData) setData)? + actionBuilder; + final Widget? action; + final canRefresh; @override _RefreshStatefulScaffoldState createState() => diff --git a/lib/scaffolds/single.dart b/lib/scaffolds/single.dart index 70b5ff4..75b4860 100644 --- a/lib/scaffolds/single.dart +++ b/lib/scaffolds/single.dart @@ -2,15 +2,15 @@ import 'package:flutter/cupertino.dart'; import 'package:git_touch/scaffolds/common.dart'; class SingleScaffold extends StatelessWidget { - final Widget title; - final Widget body; - final Widget? action; const SingleScaffold({ required this.title, required this.body, this.action, }); + final Widget title; + final Widget body; + final Widget? action; @override Widget build(BuildContext context) { diff --git a/lib/scaffolds/tab.dart b/lib/scaffolds/tab.dart index ef0fe86..d923137 100644 --- a/lib/scaffolds/tab.dart +++ b/lib/scaffolds/tab.dart @@ -3,13 +3,6 @@ import 'package:git_touch/scaffolds/common.dart'; import 'package:git_touch/scaffolds/utils.dart'; class TabScaffold extends StatelessWidget { - final Widget title; - final Widget body; - final Widget? action; - final void Function() onRefresh; - final List tabs; - final int activeTab; - final Function(int index) onTabSwitch; const TabScaffold({ required this.title, @@ -20,6 +13,13 @@ class TabScaffold extends StatelessWidget { required this.activeTab, required this.onTabSwitch, }); + final Widget title; + final Widget body; + final Widget? action; + final void Function() onRefresh; + final List tabs; + final int activeTab; + final Function(int index) onTabSwitch; @override Widget build(BuildContext context) { diff --git a/lib/scaffolds/tab_stateful.dart b/lib/scaffolds/tab_stateful.dart index 72dd543..eff2d7d 100644 --- a/lib/scaffolds/tab_stateful.dart +++ b/lib/scaffolds/tab_stateful.dart @@ -4,11 +4,6 @@ import 'package:git_touch/scaffolds/tab.dart'; import 'package:git_touch/scaffolds/utils.dart'; class TabStatefulScaffold extends StatefulWidget { - final Widget title; - final Widget Function(T payload, int activeTab) bodyBuilder; - final Future Function(int activeTab) fetchData; - final List tabs; - final Widget Function(T payload, void Function() refresh)? actionBuilder; const TabStatefulScaffold({ required this.title, @@ -17,6 +12,11 @@ class TabStatefulScaffold extends StatefulWidget { required this.tabs, this.actionBuilder, }); + final Widget title; + final Widget Function(T payload, int activeTab) bodyBuilder; + final Future Function(int activeTab) fetchData; + final List tabs; + final Widget Function(T payload, void Function() refresh)? actionBuilder; @override _TabStatefulScaffoldState createState() => _TabStatefulScaffoldState(); diff --git a/lib/scaffolds/utils.dart b/lib/scaffolds/utils.dart index 5ee2fbf..49db997 100644 --- a/lib/scaffolds/utils.dart +++ b/lib/scaffolds/utils.dart @@ -3,13 +3,13 @@ import 'package:git_touch/widgets/error_reload.dart'; import 'package:git_touch/widgets/loading.dart'; class RefreshWrapper extends StatelessWidget { - final Widget body; - final void Function() onRefresh; const RefreshWrapper({ required this.onRefresh, required this.body, }); + final Widget body; + final void Function() onRefresh; @override Widget build(BuildContext context) { @@ -26,10 +26,6 @@ class RefreshWrapper extends StatelessWidget { } class ErrorLoadingWrapper extends StatelessWidget { - final String error; - final bool loading; - final void Function() reload; - final Widget? Function() bodyBuilder; const ErrorLoadingWrapper({ required this.error, @@ -37,6 +33,10 @@ class ErrorLoadingWrapper extends StatelessWidget { required this.reload, required this.bodyBuilder, }); + final String error; + final bool loading; + final void Function() reload; + final Widget? Function() bodyBuilder; @override Widget build(BuildContext context) { diff --git a/lib/screens/bb_commits.dart b/lib/screens/bb_commits.dart index 0a7dc57..d425e55 100644 --- a/lib/screens/bb_commits.dart +++ b/lib/screens/bb_commits.dart @@ -8,10 +8,10 @@ import 'package:git_touch/widgets/commit_item.dart'; import 'package:provider/provider.dart'; class BbCommitsScreen extends StatelessWidget { + const BbCommitsScreen(this.owner, this.name, this.ref); final String owner; final String name; final String ref; - const BbCommitsScreen(this.owner, this.name, this.ref); @override Widget build(BuildContext context) { diff --git a/lib/screens/bb_issue.dart b/lib/screens/bb_issue.dart index 18ef44f..0c7cc2e 100644 --- a/lib/screens/bb_issue.dart +++ b/lib/screens/bb_issue.dart @@ -13,13 +13,13 @@ import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; class BbIssueScreen extends StatelessWidget { + + const BbIssueScreen(this.owner, this.name, this.number, {this.isPr = false}); final String owner; final String name; final String number; final bool isPr; - const BbIssueScreen(this.owner, this.name, this.number, {this.isPr = false}); - @override Widget build(BuildContext context) { return RefreshStatefulScaffold>>( diff --git a/lib/screens/bb_issue_comment.dart b/lib/screens/bb_issue_comment.dart index 78338d3..efa9f7e 100644 --- a/lib/screens/bb_issue_comment.dart +++ b/lib/screens/bb_issue_comment.dart @@ -7,10 +7,10 @@ import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/S.dart'; class BbIssueCommentScreen extends StatefulWidget { + const BbIssueCommentScreen(this.owner, this.name, this.number); final String owner; final String name; final String number; - const BbIssueCommentScreen(this.owner, this.name, this.number); @override _BbIssueCommentScreenState createState() => _BbIssueCommentScreenState(); diff --git a/lib/screens/bb_issue_form.dart b/lib/screens/bb_issue_form.dart index 03f919b..004a118 100644 --- a/lib/screens/bb_issue_form.dart +++ b/lib/screens/bb_issue_form.dart @@ -8,9 +8,9 @@ import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/S.dart'; class BbIssueFormScreen extends StatefulWidget { + const BbIssueFormScreen(this.owner, this.name); final String owner; final String name; - const BbIssueFormScreen(this.owner, this.name); @override _BbIssueFormScreenState createState() => _BbIssueFormScreenState(); diff --git a/lib/screens/bb_issues.dart b/lib/screens/bb_issues.dart index 4dab352..6194b48 100644 --- a/lib/screens/bb_issues.dart +++ b/lib/screens/bb_issues.dart @@ -9,9 +9,9 @@ import 'package:git_touch/widgets/issue_item.dart'; import 'package:provider/provider.dart'; class BbIssuesScreen extends StatelessWidget { + const BbIssuesScreen(this.owner, this.name); final String owner; final String name; - const BbIssuesScreen(this.owner, this.name); @override Widget build(BuildContext context) { diff --git a/lib/screens/bb_object.dart b/lib/screens/bb_object.dart index f727120..9b96d41 100644 --- a/lib/screens/bb_object.dart +++ b/lib/screens/bb_object.dart @@ -14,11 +14,11 @@ import 'package:provider/provider.dart'; import 'package:universal_io/io.dart'; class BbObjectScreen extends StatelessWidget { + const BbObjectScreen(this.owner, this.name, this.ref, {this.path}); final String owner; final String name; final String ref; final String? path; - const BbObjectScreen(this.owner, this.name, this.ref, {this.path}); @override Widget build(BuildContext context) { diff --git a/lib/screens/bb_pulls.dart b/lib/screens/bb_pulls.dart index 293d51c..1ee6cfc 100644 --- a/lib/screens/bb_pulls.dart +++ b/lib/screens/bb_pulls.dart @@ -8,9 +8,9 @@ import 'package:git_touch/widgets/issue_item.dart'; import 'package:provider/provider.dart'; class BbPullsScreen extends StatelessWidget { + const BbPullsScreen(this.owner, this.name); final String owner; final String name; - const BbPullsScreen(this.owner, this.name); @override Widget build(BuildContext context) { diff --git a/lib/screens/bb_repo.dart b/lib/screens/bb_repo.dart index a94aa55..bb85ccd 100644 --- a/lib/screens/bb_repo.dart +++ b/lib/screens/bb_repo.dart @@ -17,10 +17,10 @@ import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; class BbRepoScreen extends StatelessWidget { + const BbRepoScreen(this.owner, this.name, {this.branch}); final String owner; final String name; final String? branch; - const BbRepoScreen(this.owner, this.name, {this.branch}); @override Widget build(BuildContext context) { diff --git a/lib/screens/bb_user.dart b/lib/screens/bb_user.dart index 4efe7e8..4fd83c4 100644 --- a/lib/screens/bb_user.dart +++ b/lib/screens/bb_user.dart @@ -10,9 +10,9 @@ import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; class BbUserScreen extends StatelessWidget { + const BbUserScreen(this.login, {this.isTeam = false}); final String? login; final bool isTeam; - const BbUserScreen(this.login, {this.isTeam = false}); bool get isViewer => login == null; @override diff --git a/lib/screens/ge_blob.dart b/lib/screens/ge_blob.dart index 3dc88d4..6159c17 100644 --- a/lib/screens/ge_blob.dart +++ b/lib/screens/ge_blob.dart @@ -10,11 +10,11 @@ import 'package:git_touch/widgets/blob_view.dart'; import 'package:provider/provider.dart'; class GeBlobScreen extends StatelessWidget { + const GeBlobScreen(this.owner, this.name, this.sha, this.path); final String owner; final String name; final String sha; final String path; - const GeBlobScreen(this.owner, this.name, this.sha, this.path); @override Widget build(BuildContext context) { diff --git a/lib/screens/ge_commit.dart b/lib/screens/ge_commit.dart index fbace05..2b5bef6 100644 --- a/lib/screens/ge_commit.dart +++ b/lib/screens/ge_commit.dart @@ -11,10 +11,10 @@ import 'package:git_touch/widgets/link.dart'; import 'package:provider/provider.dart'; class GeCommitScreen extends StatelessWidget { + const GeCommitScreen(this.owner, this.name, this.sha); final String owner; final String name; final String sha; - const GeCommitScreen(this.owner, this.name, this.sha); @override Widget build(BuildContext context) { diff --git a/lib/screens/ge_commits.dart b/lib/screens/ge_commits.dart index cd5ad74..dd35a88 100644 --- a/lib/screens/ge_commits.dart +++ b/lib/screens/ge_commits.dart @@ -8,10 +8,10 @@ import 'package:git_touch/widgets/commit_item.dart'; import 'package:provider/provider.dart'; class GeCommitsScreen extends StatelessWidget { + const GeCommitsScreen(this.owner, this.name, {this.branch}); final String owner; final String name; final String? branch; - const GeCommitsScreen(this.owner, this.name, {this.branch}); @override Widget build(BuildContext context) { diff --git a/lib/screens/ge_contributors.dart b/lib/screens/ge_contributors.dart index 7e6252d..59dabb4 100644 --- a/lib/screens/ge_contributors.dart +++ b/lib/screens/ge_contributors.dart @@ -9,9 +9,9 @@ import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:provider/provider.dart'; class GeContributorsScreen extends StatelessWidget { + const GeContributorsScreen(this.owner, this.name); final String owner; final String name; - const GeContributorsScreen(this.owner, this.name); @override Widget build(BuildContext context) { diff --git a/lib/screens/ge_files.dart b/lib/screens/ge_files.dart index 8e32cf4..1c14daa 100644 --- a/lib/screens/ge_files.dart +++ b/lib/screens/ge_files.dart @@ -10,10 +10,10 @@ import 'package:git_touch/widgets/files_item.dart'; import 'package:provider/provider.dart'; class GeFilesScreen extends StatelessWidget { + const GeFilesScreen(this.owner, this.name, this.pullNumber); final String owner; final String name; final String pullNumber; - const GeFilesScreen(this.owner, this.name, this.pullNumber); @override Widget build(BuildContext context) { diff --git a/lib/screens/ge_issue.dart b/lib/screens/ge_issue.dart index b797eab..4ac6d57 100644 --- a/lib/screens/ge_issue.dart +++ b/lib/screens/ge_issue.dart @@ -14,13 +14,13 @@ import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; class GeIssueScreen extends StatelessWidget { + + const GeIssueScreen(this.owner, this.name, this.number, {this.isPr = false}); final String owner; final String name; final String number; final bool isPr; - const GeIssueScreen(this.owner, this.name, this.number, {this.isPr = false}); - List _buildCommentActionItem( BuildContext context, GiteeComment comment) { final auth = context.read(); diff --git a/lib/screens/ge_issue_comment.dart b/lib/screens/ge_issue_comment.dart index 82e714e..1e2a9e3 100644 --- a/lib/screens/ge_issue_comment.dart +++ b/lib/screens/ge_issue_comment.dart @@ -7,14 +7,14 @@ import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/S.dart'; class GeIssueCommentScreen extends StatefulWidget { + const GeIssueCommentScreen(this.owner, this.name, this.number, + {this.isPr = false, this.body = '', this.id = ''}); final String owner; final String name; final String number; final bool isPr; final String body; final String id; - const GeIssueCommentScreen(this.owner, this.name, this.number, - {this.isPr = false, this.body = '', this.id = ''}); @override _GeIssueCommentScreenState createState() => _GeIssueCommentScreenState(); diff --git a/lib/screens/ge_issue_form.dart b/lib/screens/ge_issue_form.dart index 4e369ac..b7f7697 100644 --- a/lib/screens/ge_issue_form.dart +++ b/lib/screens/ge_issue_form.dart @@ -8,9 +8,9 @@ import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/S.dart'; class GeIssueFormScreen extends StatefulWidget { + const GeIssueFormScreen(this.owner, this.name); final String owner; final String name; - const GeIssueFormScreen(this.owner, this.name); @override _GeIssueFormScreenState createState() => _GeIssueFormScreenState(); diff --git a/lib/screens/ge_issues.dart b/lib/screens/ge_issues.dart index efdf95e..b4dc2bd 100644 --- a/lib/screens/ge_issues.dart +++ b/lib/screens/ge_issues.dart @@ -9,10 +9,10 @@ import 'package:git_touch/widgets/issue_item.dart'; import 'package:provider/provider.dart'; class GeIssuesScreen extends StatelessWidget { + const GeIssuesScreen(this.owner, this.name, {this.isPr = false}); final String owner; final String name; final bool isPr; - const GeIssuesScreen(this.owner, this.name, {this.isPr = false}); @override Widget build(BuildContext context) { diff --git a/lib/screens/ge_pull.dart b/lib/screens/ge_pull.dart index d2f287b..aa7c7d5 100644 --- a/lib/screens/ge_pull.dart +++ b/lib/screens/ge_pull.dart @@ -14,13 +14,13 @@ import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; class GePullScreen extends StatelessWidget { + + const GePullScreen(this.owner, this.name, this.number, {this.isPr = false}); final String owner; final String name; final String number; final bool isPr; - const GePullScreen(this.owner, this.name, this.number, {this.isPr = false}); - List _buildCommentActionItem( BuildContext context, GiteeComment comment) { final auth = context.read(); diff --git a/lib/screens/ge_pulls.dart b/lib/screens/ge_pulls.dart index b564243..ff7fc92 100644 --- a/lib/screens/ge_pulls.dart +++ b/lib/screens/ge_pulls.dart @@ -8,10 +8,10 @@ import 'package:git_touch/widgets/issue_item.dart'; import 'package:provider/provider.dart'; class GePullsScreen extends StatelessWidget { + const GePullsScreen(this.owner, this.name, {this.isPr = false}); final String owner; final String name; final bool isPr; - const GePullsScreen(this.owner, this.name, {this.isPr = false}); @override Widget build(BuildContext context) { diff --git a/lib/screens/ge_repo.dart b/lib/screens/ge_repo.dart index a6e5200..5084a13 100644 --- a/lib/screens/ge_repo.dart +++ b/lib/screens/ge_repo.dart @@ -20,16 +20,16 @@ import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; class StatusPayload { + StatusPayload(this.isWatching, this.isStarred); bool isWatching; bool isStarred; - StatusPayload(this.isWatching, this.isStarred); } class GeRepoScreen extends StatelessWidget { + const GeRepoScreen(this.owner, this.name, {this.branch}); final String owner; final String name; final String? branch; - const GeRepoScreen(this.owner, this.name, {this.branch}); @override Widget build(BuildContext context) { diff --git a/lib/screens/ge_repos.dart b/lib/screens/ge_repos.dart index 8048e5e..4fca642 100644 --- a/lib/screens/ge_repos.dart +++ b/lib/screens/ge_repos.dart @@ -8,8 +8,6 @@ import 'package:provider/provider.dart'; import 'package:timeago/timeago.dart' as timeago; class GeReposScreen extends StatelessWidget { - final String api; - final String title; const GeReposScreen(String owner) : api = '/users/$owner/repos', @@ -20,6 +18,8 @@ class GeReposScreen extends StatelessWidget { const GeReposScreen.forks(String owner, String name) : api = '/repos/$owner/$name/forks', title = 'Forks'; + final String api; + final String title; @override Widget build(BuildContext context) { diff --git a/lib/screens/ge_tree.dart b/lib/screens/ge_tree.dart index 314f905..d1bee8f 100644 --- a/lib/screens/ge_tree.dart +++ b/lib/screens/ge_tree.dart @@ -11,10 +11,10 @@ import 'package:git_touch/widgets/object_tree.dart'; import 'package:provider/provider.dart'; class GeTreeScreen extends StatelessWidget { + const GeTreeScreen(this.owner, this.name, this.sha); final String owner; final String name; final String sha; - const GeTreeScreen(this.owner, this.name, this.sha); @override Widget build(BuildContext context) { diff --git a/lib/screens/ge_user.dart b/lib/screens/ge_user.dart index fe715f5..824ef14 100644 --- a/lib/screens/ge_user.dart +++ b/lib/screens/ge_user.dart @@ -15,9 +15,9 @@ import 'package:timeago/timeago.dart' as timeago; import 'package:tuple/tuple.dart'; class GeUserScreen extends StatelessWidget { + const GeUserScreen(this.login, {this.isViewer = false}); final String login; final bool isViewer; - const GeUserScreen(this.login, {this.isViewer = false}); @override Widget build(BuildContext context) { diff --git a/lib/screens/ge_users.dart b/lib/screens/ge_users.dart index ef5fa5c..dc9b13b 100644 --- a/lib/screens/ge_users.dart +++ b/lib/screens/ge_users.dart @@ -7,8 +7,6 @@ import 'package:git_touch/widgets/user_item.dart'; import 'package:provider/provider.dart'; class GeUsersScreen extends StatelessWidget { - final String api; - final String title; const GeUsersScreen.followers(String login) : api = '/users/$login/followers', @@ -25,6 +23,8 @@ class GeUsersScreen extends StatelessWidget { const GeUsersScreen.watchers(String owner, String repo) : api = '/repos/$owner/$repo/subscribers', title = 'Watchers'; + final String api; + final String title; @override Widget build(BuildContext context) { diff --git a/lib/screens/gh_commits.dart b/lib/screens/gh_commits.dart index 454a9ef..68889c5 100644 --- a/lib/screens/gh_commits.dart +++ b/lib/screens/gh_commits.dart @@ -12,10 +12,10 @@ import 'package:git_touch/widgets/commit_item.dart'; import 'package:provider/provider.dart'; class GhCommits extends StatelessWidget { + const GhCommits(this.owner, this.name, {this.branch}); final String owner; final String name; final String? branch; - const GhCommits(this.owner, this.name, {this.branch}); Widget _buildStatus(GStatusState? state) { const size = 18.0; diff --git a/lib/screens/gh_compare.dart b/lib/screens/gh_compare.dart index 75cc5c8..c93b38b 100644 --- a/lib/screens/gh_compare.dart +++ b/lib/screens/gh_compare.dart @@ -10,11 +10,11 @@ import 'package:git_touch/widgets/files_item.dart'; import 'package:provider/provider.dart'; class GhComparisonScreen extends StatelessWidget { + const GhComparisonScreen(this.owner, this.name, this.before, this.head); final String owner; final String name; final String before; final String head; - const GhComparisonScreen(this.owner, this.name, this.before, this.head); @override Widget build(BuildContext context) { diff --git a/lib/screens/gh_contributors.dart b/lib/screens/gh_contributors.dart index a798769..7e64a2f 100644 --- a/lib/screens/gh_contributors.dart +++ b/lib/screens/gh_contributors.dart @@ -9,9 +9,9 @@ import 'package:git_touch/widgets/contributor_item.dart'; import 'package:provider/provider.dart'; class GhContributorsScreen extends StatelessWidget { + const GhContributorsScreen(this.owner, this.name); final String owner; final String name; - const GhContributorsScreen(this.owner, this.name); @override Widget build(BuildContext context) { diff --git a/lib/screens/gh_events.dart b/lib/screens/gh_events.dart index 890e728..4861605 100644 --- a/lib/screens/gh_events.dart +++ b/lib/screens/gh_events.dart @@ -9,8 +9,8 @@ import 'package:git_touch/widgets/event_item.dart'; import 'package:provider/provider.dart'; class GhEventsScreen extends StatelessWidget { - final String login; const GhEventsScreen(this.login); + final String login; @override Widget build(context) { diff --git a/lib/screens/gh_files.dart b/lib/screens/gh_files.dart index ef1339f..8fb001e 100644 --- a/lib/screens/gh_files.dart +++ b/lib/screens/gh_files.dart @@ -10,10 +10,10 @@ import 'package:git_touch/widgets/files_item.dart'; import 'package:provider/provider.dart'; class GhFilesScreen extends StatelessWidget { + const GhFilesScreen(this.owner, this.name, this.pullNumber); final String owner; final String name; final int pullNumber; - const GhFilesScreen(this.owner, this.name, this.pullNumber); @override Widget build(BuildContext context) { diff --git a/lib/screens/gh_gist_object.dart b/lib/screens/gh_gist_object.dart index 0c3de1f..fc130bb 100644 --- a/lib/screens/gh_gist_object.dart +++ b/lib/screens/gh_gist_object.dart @@ -6,15 +6,15 @@ import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/blob_view.dart'; class GistObjectScreen extends StatelessWidget { + + const GistObjectScreen(this.login, this.id, this.file, + {this.raw, this.content}); final String login; final String id; final String file; final String? raw; final String? content; - const GistObjectScreen(this.login, this.id, this.file, - {this.raw, this.content}); - @override Widget build(BuildContext context) { return CommonScaffold( diff --git a/lib/screens/gh_gists.dart b/lib/screens/gh_gists.dart index 76d2d5b..498d117 100644 --- a/lib/screens/gh_gists.dart +++ b/lib/screens/gh_gists.dart @@ -12,8 +12,8 @@ import 'package:git_touch/widgets/gists_item.dart'; import 'package:provider/provider.dart'; class GhGistsScreen extends StatelessWidget { - final String login; const GhGistsScreen(this.login); + final String login; @override Widget build(BuildContext context) { diff --git a/lib/screens/gh_gists_files.dart b/lib/screens/gh_gists_files.dart index 6013dc3..88863eb 100644 --- a/lib/screens/gh_gists_files.dart +++ b/lib/screens/gh_gists_files.dart @@ -13,9 +13,9 @@ import 'package:git_touch/widgets/object_tree.dart'; import 'package:provider/provider.dart'; class GhGistsFilesScreen extends StatelessWidget { + const GhGistsFilesScreen(this.login, this.id); final String id; final String login; - const GhGistsFilesScreen(this.login, this.id); @override Widget build(BuildContext context) { diff --git a/lib/screens/gh_issue.dart b/lib/screens/gh_issue.dart index 01ce9d0..6c08eb9 100644 --- a/lib/screens/gh_issue.dart +++ b/lib/screens/gh_issue.dart @@ -18,10 +18,10 @@ import 'package:git_touch/scaffolds/long_list.dart'; import 'package:git_touch/widgets/comment_item.dart'; class GhIssueScreen extends StatelessWidget { + const GhIssueScreen(this.owner, this.name, this.number); final String owner; final String name; final int number; - const GhIssueScreen(this.owner, this.name, this.number); Widget _buildHeader( BuildContext context, { diff --git a/lib/screens/gh_issue_form.dart b/lib/screens/gh_issue_form.dart index 3989289..4356b52 100644 --- a/lib/screens/gh_issue_form.dart +++ b/lib/screens/gh_issue_form.dart @@ -8,9 +8,9 @@ import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/S.dart'; class GhIssueFormScreen extends StatefulWidget { + const GhIssueFormScreen(this.owner, this.name); final String owner; final String name; - const GhIssueFormScreen(this.owner, this.name); @override _GhIssueFormScreenState createState() => _GhIssueFormScreenState(); diff --git a/lib/screens/gh_issues.dart b/lib/screens/gh_issues.dart index ad3284e..a16760b 100644 --- a/lib/screens/gh_issues.dart +++ b/lib/screens/gh_issues.dart @@ -13,9 +13,9 @@ import 'package:git_touch/widgets/issue_item.dart'; import 'package:provider/provider.dart'; class GhIssuesScreen extends StatelessWidget { + const GhIssuesScreen(this.owner, this.name); final String owner; final String name; - const GhIssuesScreen(this.owner, this.name); @override Widget build(BuildContext context) { diff --git a/lib/screens/gh_object.dart b/lib/screens/gh_object.dart index 8b6f66d..16802b1 100644 --- a/lib/screens/gh_object.dart +++ b/lib/screens/gh_object.dart @@ -12,12 +12,12 @@ import 'package:github/github.dart'; import 'package:provider/provider.dart'; class GhObjectScreen extends StatelessWidget { + const GhObjectScreen(this.owner, this.name, this.ref, {this.path, this.raw}); final String owner; final String name; final String ref; final String? path; final String? raw; - const GhObjectScreen(this.owner, this.name, this.ref, {this.path, this.raw}); @override Widget build(BuildContext context) { diff --git a/lib/screens/gh_pulls.dart b/lib/screens/gh_pulls.dart index 2087602..70aa5c3 100644 --- a/lib/screens/gh_pulls.dart +++ b/lib/screens/gh_pulls.dart @@ -12,9 +12,9 @@ import 'package:git_touch/widgets/issue_item.dart'; import 'package:provider/provider.dart'; class GhPullsScreen extends StatelessWidget { + const GhPullsScreen(this.owner, this.name); final String owner; final String name; - const GhPullsScreen(this.owner, this.name); @override Widget build(BuildContext context) { diff --git a/lib/screens/gh_releases.dart b/lib/screens/gh_releases.dart index d855baf..8d8c390 100644 --- a/lib/screens/gh_releases.dart +++ b/lib/screens/gh_releases.dart @@ -11,9 +11,9 @@ import 'package:git_touch/widgets/release_item.dart'; import 'package:provider/provider.dart'; class GhReleasesScreen extends StatelessWidget { + const GhReleasesScreen(this.owner, this.name); final String owner; final String name; - const GhReleasesScreen(this.owner, this.name); @override Widget build(BuildContext context) { diff --git a/lib/screens/gh_repo.dart b/lib/screens/gh_repo.dart index cb9eed0..a990301 100644 --- a/lib/screens/gh_repo.dart +++ b/lib/screens/gh_repo.dart @@ -27,10 +27,10 @@ import 'package:tuple/tuple.dart'; import 'package:universal_io/io.dart'; class GhRepoScreen extends StatelessWidget { + const GhRepoScreen(this.owner, this.name, {this.branch}); final String owner; final String name; final String? branch; - const GhRepoScreen(this.owner, this.name, {this.branch}); String _buildWatchState(GSubscriptionState? state) { switch (state) { diff --git a/lib/screens/gh_repos.dart b/lib/screens/gh_repos.dart index 7b21553..69e221d 100644 --- a/lib/screens/gh_repos.dart +++ b/lib/screens/gh_repos.dart @@ -11,8 +11,8 @@ import 'package:provider/provider.dart'; import 'package:timeago/timeago.dart' as timeago; class GhRepos extends StatelessWidget { - final String login; const GhRepos(this.login); + final String login; @override Widget build(BuildContext context) { @@ -42,8 +42,8 @@ class GhRepos extends StatelessWidget { } class GhStars extends StatelessWidget { - final String login; const GhStars(this.login); + final String login; @override Widget build(BuildContext context) { diff --git a/lib/screens/gh_user.dart b/lib/screens/gh_user.dart index 8a7d59f..bf9c238 100644 --- a/lib/screens/gh_user.dart +++ b/lib/screens/gh_user.dart @@ -24,13 +24,13 @@ import 'package:go_router/go_router.dart'; import 'package:provider/provider.dart'; class _Repos extends StatelessWidget { - final String title; - final Iterable? repos; _Repos(final Iterable pinned, final Iterable? repos) : title = pinned.isNotEmpty ? 'pinned repositories' : 'popular repositories', repos = pinned.isNotEmpty ? pinned : repos; + final String title; + final Iterable? repos; @override Widget build(BuildContext context) { @@ -61,10 +61,10 @@ class _Repos extends StatelessWidget { } class _User extends StatelessWidget { + const _User(this.p, {this.isViewer = false, this.rightWidgets = const []}); final GUserPartsFull? p; final bool isViewer; final List rightWidgets; - const _User(this.p, {this.isViewer = false, this.rightWidgets = const []}); @override Widget build(BuildContext context) { @@ -195,8 +195,8 @@ class _User extends StatelessWidget { } class _Org extends StatelessWidget { - final GUserData_repositoryOwner__asOrganization? p; const _Org(this.p); + final GUserData_repositoryOwner__asOrganization? p; @override Widget build(BuildContext context) { @@ -298,8 +298,8 @@ class GhViewer extends StatelessWidget { } class GhUser extends StatelessWidget { - final String login; const GhUser(this.login); + final String login; @override Widget build(BuildContext context) { diff --git a/lib/screens/gh_users.dart b/lib/screens/gh_users.dart index e630c9e..57cd712 100644 --- a/lib/screens/gh_users.dart +++ b/lib/screens/gh_users.dart @@ -10,8 +10,8 @@ import 'package:git_touch/widgets/user_item.dart'; import 'package:provider/provider.dart'; class GhFollowers extends StatelessWidget { - final String login; const GhFollowers(this.login); + final String login; @override Widget build(BuildContext context) { @@ -40,8 +40,8 @@ class GhFollowers extends StatelessWidget { } class GhFollowing extends StatelessWidget { - final String login; const GhFollowing(this.login); + final String login; @override Widget build(BuildContext context) { @@ -70,8 +70,8 @@ class GhFollowing extends StatelessWidget { } class GhOrgs extends StatelessWidget { - final String login; const GhOrgs(this.login, {super.key}); + final String login; @override Widget build(BuildContext context) { @@ -99,8 +99,8 @@ class GhOrgs extends StatelessWidget { } class GhMembers extends StatelessWidget { - final String login; const GhMembers(this.login); + final String login; @override Widget build(BuildContext context) { @@ -129,9 +129,9 @@ class GhMembers extends StatelessWidget { } class GhWachers extends StatelessWidget { + const GhWachers(this.owner, this.name); final String owner; final String name; - const GhWachers(this.owner, this.name); @override Widget build(BuildContext context) { @@ -161,9 +161,9 @@ class GhWachers extends StatelessWidget { } class GhStargazers extends StatelessWidget { + const GhStargazers(this.owner, this.name); final String owner; final String name; - const GhStargazers(this.owner, this.name); @override Widget build(BuildContext context) { diff --git a/lib/screens/gl_blob.dart b/lib/screens/gl_blob.dart index 41e443b..b047697 100644 --- a/lib/screens/gl_blob.dart +++ b/lib/screens/gl_blob.dart @@ -9,10 +9,10 @@ import 'package:git_touch/widgets/blob_view.dart'; import 'package:provider/provider.dart'; class GlBlobScreen extends StatelessWidget { + const GlBlobScreen(this.id, this.ref, {this.path}); final int id; final String ref; final String? path; - const GlBlobScreen(this.id, this.ref, {this.path}); @override Widget build(BuildContext context) { diff --git a/lib/screens/gl_commit.dart b/lib/screens/gl_commit.dart index 288eec3..db3a1f3 100644 --- a/lib/screens/gl_commit.dart +++ b/lib/screens/gl_commit.dart @@ -13,9 +13,9 @@ import 'package:provider/provider.dart'; // TODO: class GlCommitScreen extends StatelessWidget { + const GlCommitScreen(this.id, {this.sha}); final String id; final String? sha; - const GlCommitScreen(this.id, {this.sha}); Future> _query(BuildContext context) async { final auth = context.read(); diff --git a/lib/screens/gl_commits.dart b/lib/screens/gl_commits.dart index da6db39..9889b9c 100644 --- a/lib/screens/gl_commits.dart +++ b/lib/screens/gl_commits.dart @@ -8,10 +8,10 @@ import 'package:git_touch/widgets/commit_item.dart'; import 'package:provider/provider.dart'; class GlCommitsScreen extends StatelessWidget { + const GlCommitsScreen(this.id, {this.prefix, this.branch}); final String id; final String? prefix; final String? branch; - const GlCommitsScreen(this.id, {this.prefix, this.branch}); @override Widget build(BuildContext context) { diff --git a/lib/screens/gl_group.dart b/lib/screens/gl_group.dart index 4595ba1..f1c79ee 100644 --- a/lib/screens/gl_group.dart +++ b/lib/screens/gl_group.dart @@ -12,8 +12,8 @@ import 'package:timeago/timeago.dart' as timeago; import 'package:tuple/tuple.dart'; class GlGroupScreen extends StatelessWidget { - final int id; const GlGroupScreen(this.id); + final int id; @override Widget build(BuildContext context) { diff --git a/lib/screens/gl_issue.dart b/lib/screens/gl_issue.dart index a21a498..8b4f1db 100644 --- a/lib/screens/gl_issue.dart +++ b/lib/screens/gl_issue.dart @@ -10,12 +10,12 @@ import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; class GlIssueScreen extends StatelessWidget { + + const GlIssueScreen(this.projectId, this.iid, {this.isMr = false}); final int projectId; final int iid; final bool isMr; - const GlIssueScreen(this.projectId, this.iid, {this.isMr = false}); - @override Widget build(BuildContext context) { return RefreshStatefulScaffold< diff --git a/lib/screens/gl_issue_form.dart b/lib/screens/gl_issue_form.dart index 4a3d5c4..b9ca80d 100644 --- a/lib/screens/gl_issue_form.dart +++ b/lib/screens/gl_issue_form.dart @@ -8,8 +8,8 @@ import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/S.dart'; class GlIssueFormScreen extends StatefulWidget { - final int id; const GlIssueFormScreen(this.id); + final int id; @override _GlIssueFormScreenState createState() => _GlIssueFormScreenState(); diff --git a/lib/screens/gl_issues.dart b/lib/screens/gl_issues.dart index c228c68..06cd920 100644 --- a/lib/screens/gl_issues.dart +++ b/lib/screens/gl_issues.dart @@ -10,9 +10,9 @@ import 'package:git_touch/widgets/issue_item.dart'; import 'package:provider/provider.dart'; class GlIssuesScreen extends StatelessWidget { + const GlIssuesScreen(this.id, {this.prefix}); final String id; final String? prefix; - const GlIssuesScreen(this.id, {this.prefix}); @override Widget build(BuildContext context) { diff --git a/lib/screens/gl_members.dart b/lib/screens/gl_members.dart index 812921a..0452f83 100644 --- a/lib/screens/gl_members.dart +++ b/lib/screens/gl_members.dart @@ -8,9 +8,9 @@ import 'package:git_touch/widgets/user_item.dart'; import 'package:provider/provider.dart'; class GlMembersScreen extends StatelessWidget { + const GlMembersScreen(this.id, this.type); final int id; final String type; - const GlMembersScreen(this.id, this.type); // https://docs.gitlab.com/ee/api/access_requests.html#valid-access-levels static const accessLevelMap = { diff --git a/lib/screens/gl_merge_requests.dart b/lib/screens/gl_merge_requests.dart index f8c8a8a..e21fead 100644 --- a/lib/screens/gl_merge_requests.dart +++ b/lib/screens/gl_merge_requests.dart @@ -9,9 +9,9 @@ import 'package:git_touch/widgets/issue_item.dart'; import 'package:provider/provider.dart'; class GlMergeRequestsScreen extends StatelessWidget { + const GlMergeRequestsScreen(this.id, {this.prefix}); final String id; final String? prefix; - const GlMergeRequestsScreen(this.id, {this.prefix}); @override Widget build(BuildContext context) { diff --git a/lib/screens/gl_project.dart b/lib/screens/gl_project.dart index c10db0d..815f79d 100644 --- a/lib/screens/gl_project.dart +++ b/lib/screens/gl_project.dart @@ -19,9 +19,9 @@ import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; class GlProjectScreen extends StatelessWidget { + const GlProjectScreen(this.id, {this.branch}); final int id; final String? branch; - const GlProjectScreen(this.id, {this.branch}); @override Widget build(BuildContext context) { diff --git a/lib/screens/gl_project_activity.dart b/lib/screens/gl_project_activity.dart index 1878d0d..01db298 100644 --- a/lib/screens/gl_project_activity.dart +++ b/lib/screens/gl_project_activity.dart @@ -10,8 +10,8 @@ import 'package:git_touch/widgets/link.dart'; import 'package:provider/provider.dart'; class GlProjectActivityScreen extends StatelessWidget { - final int id; const GlProjectActivityScreen(this.id); + final int id; @override Widget build(BuildContext context) { diff --git a/lib/screens/gl_starrers.dart b/lib/screens/gl_starrers.dart index 7ace4a9..2ad152c 100644 --- a/lib/screens/gl_starrers.dart +++ b/lib/screens/gl_starrers.dart @@ -9,8 +9,8 @@ import 'package:provider/provider.dart'; import 'package:timeago/timeago.dart' as timeago; class GlStarrersScreen extends StatelessWidget { - final int id; const GlStarrersScreen(this.id); + final int id; @override Widget build(BuildContext context) { diff --git a/lib/screens/gl_tree.dart b/lib/screens/gl_tree.dart index 676383b..6b6d35f 100644 --- a/lib/screens/gl_tree.dart +++ b/lib/screens/gl_tree.dart @@ -10,10 +10,10 @@ import 'package:git_touch/widgets/table_view.dart'; import 'package:provider/provider.dart'; class GlTreeScreen extends StatelessWidget { + const GlTreeScreen(this.id, this.ref, {this.path}); final int id; final String ref; final String? path; - const GlTreeScreen(this.id, this.ref, {this.path}); @override Widget build(BuildContext context) { diff --git a/lib/screens/gl_user.dart b/lib/screens/gl_user.dart index a3884d8..b37bf37 100644 --- a/lib/screens/gl_user.dart +++ b/lib/screens/gl_user.dart @@ -12,8 +12,8 @@ import 'package:timeago/timeago.dart' as timeago; import 'package:tuple/tuple.dart'; class GlUserScreen extends StatelessWidget { - final int? id; const GlUserScreen(this.id); + final int? id; bool get isViewer => id == null; @override diff --git a/lib/screens/go_commits.dart b/lib/screens/go_commits.dart index 33c6d87..bcfcb2c 100644 --- a/lib/screens/go_commits.dart +++ b/lib/screens/go_commits.dart @@ -8,10 +8,10 @@ import 'package:git_touch/widgets/commit_item.dart'; import 'package:provider/provider.dart'; class GoCommitsScreen extends StatelessWidget { + const GoCommitsScreen(this.owner, this.name, {this.branch = 'master'}); final String owner; final String name; final String? branch; - const GoCommitsScreen(this.owner, this.name, {this.branch = 'master'}); // TODO: API only returns most recent commit. No provision for all commits. @override diff --git a/lib/screens/go_issues.dart b/lib/screens/go_issues.dart index ed23cac..534c6cf 100644 --- a/lib/screens/go_issues.dart +++ b/lib/screens/go_issues.dart @@ -10,10 +10,10 @@ import 'package:git_touch/widgets/issue_item.dart'; import 'package:provider/provider.dart'; class GoIssuesScreen extends StatelessWidget { + const GoIssuesScreen(this.owner, this.name, {this.isPr = false}); final String owner; final String name; final bool isPr; - const GoIssuesScreen(this.owner, this.name, {this.isPr = false}); @override Widget build(BuildContext context) { diff --git a/lib/screens/go_object.dart b/lib/screens/go_object.dart index f892433..c4b6814 100644 --- a/lib/screens/go_object.dart +++ b/lib/screens/go_object.dart @@ -12,11 +12,11 @@ import 'package:git_touch/widgets/object_tree.dart'; import 'package:provider/provider.dart'; class GoObjectScreen extends StatelessWidget { + const GoObjectScreen(this.owner, this.name, {this.path, this.ref}); final String owner; final String name; final String? path; final String? ref; - const GoObjectScreen(this.owner, this.name, {this.path, this.ref}); @override Widget build(BuildContext context) { diff --git a/lib/screens/go_orgs.dart b/lib/screens/go_orgs.dart index d81978b..4d3a853 100644 --- a/lib/screens/go_orgs.dart +++ b/lib/screens/go_orgs.dart @@ -9,11 +9,11 @@ import 'package:git_touch/widgets/user_item.dart'; import 'package:provider/provider.dart'; class GoOrgsScreen extends StatelessWidget { - final String api; - final bool isViewer; // TODO: implement list of orgs screen when API is available const GoOrgsScreen.ofUser(String login, {required this.isViewer}) : api = isViewer ? '/users/$login/orgs' : '/user/orgs'; + final String api; + final bool isViewer; @override Widget build(BuildContext context) { diff --git a/lib/screens/go_repo.dart b/lib/screens/go_repo.dart index 956a70d..8a9c24a 100644 --- a/lib/screens/go_repo.dart +++ b/lib/screens/go_repo.dart @@ -18,10 +18,10 @@ import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; class GoRepoScreen extends StatelessWidget { + const GoRepoScreen(this.owner, this.name, {this.branch}); final String owner; final String name; final String? branch; - const GoRepoScreen(this.owner, this.name, {this.branch}); @override Widget build(BuildContext context) { diff --git a/lib/screens/go_repos.dart b/lib/screens/go_repos.dart index e9a16bc..57e6c82 100644 --- a/lib/screens/go_repos.dart +++ b/lib/screens/go_repos.dart @@ -7,9 +7,6 @@ import 'package:git_touch/widgets/repository_item.dart'; import 'package:provider/provider.dart'; class GoReposScreen extends StatelessWidget { - final String api; - final String title; - final bool isViewer; const GoReposScreen(String owner, {this.isViewer = false}) : api = isViewer ? '/users/$owner/repos' : '/user/repos', @@ -18,6 +15,9 @@ class GoReposScreen extends StatelessWidget { : api = '/orgs/$owner/repos', title = 'Repositories', isViewer = false; + final String api; + final String title; + final bool isViewer; @override Widget build(BuildContext context) { diff --git a/lib/screens/go_user.dart b/lib/screens/go_user.dart index 12ace89..e3c1d78 100644 --- a/lib/screens/go_user.dart +++ b/lib/screens/go_user.dart @@ -13,9 +13,9 @@ import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; class GoUserScreen extends StatelessWidget { + const GoUserScreen(this.login, {this.isViewer = false}); final String login; final bool isViewer; - const GoUserScreen(this.login, {this.isViewer = false}); @override Widget build(BuildContext context) { diff --git a/lib/screens/go_users.dart b/lib/screens/go_users.dart index 2011845..110d8de 100644 --- a/lib/screens/go_users.dart +++ b/lib/screens/go_users.dart @@ -7,8 +7,6 @@ import 'package:git_touch/widgets/user_item.dart'; import 'package:provider/provider.dart'; class GoUsersScreen extends StatelessWidget { - final String api; - final String title; const GoUsersScreen.followers(String login) : api = '/users/$login/followers', @@ -16,6 +14,8 @@ class GoUsersScreen extends StatelessWidget { const GoUsersScreen.following(String login) : api = '/users/$login/following', title = 'Following'; + final String api; + final String title; @override Widget build(BuildContext context) { diff --git a/lib/screens/gt_commits.dart b/lib/screens/gt_commits.dart index 97fdea5..d777b56 100644 --- a/lib/screens/gt_commits.dart +++ b/lib/screens/gt_commits.dart @@ -8,10 +8,10 @@ import 'package:git_touch/widgets/commit_item.dart'; import 'package:provider/provider.dart'; class GtCommitsScreen extends StatelessWidget { - final String owner; - final String name; // final String branch; // TODO: const GtCommitsScreen(this.owner, this.name); + final String owner; + final String name; @override Widget build(BuildContext context) { diff --git a/lib/screens/gt_issue.dart b/lib/screens/gt_issue.dart index d464e36..25ec7a7 100644 --- a/lib/screens/gt_issue.dart +++ b/lib/screens/gt_issue.dart @@ -14,13 +14,13 @@ import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; class GtIssueScreen extends StatelessWidget { + + const GtIssueScreen(this.owner, this.name, this.number, {this.isPr = false}); final String owner; final String name; final String number; final bool isPr; - const GtIssueScreen(this.owner, this.name, this.number, {this.isPr = false}); - List _buildCommentActionItem( BuildContext context, GiteaComment comment) { final auth = context.read(); diff --git a/lib/screens/gt_issue_comment.dart b/lib/screens/gt_issue_comment.dart index 4ecca56..d625e82 100644 --- a/lib/screens/gt_issue_comment.dart +++ b/lib/screens/gt_issue_comment.dart @@ -7,14 +7,14 @@ import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/S.dart'; class GtIssueCommentScreen extends StatefulWidget { + const GtIssueCommentScreen(this.owner, this.name, this.number, + {this.isPr = false, this.body = '', this.id = ''}); final String owner; final String name; final String number; final bool isPr; final String body; final String id; - const GtIssueCommentScreen(this.owner, this.name, this.number, - {this.isPr = false, this.body = '', this.id = ''}); @override _GtIssueCommentScreenState createState() => _GtIssueCommentScreenState(); diff --git a/lib/screens/gt_issue_form.dart b/lib/screens/gt_issue_form.dart index fa2d314..dc42e46 100644 --- a/lib/screens/gt_issue_form.dart +++ b/lib/screens/gt_issue_form.dart @@ -8,9 +8,9 @@ import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/S.dart'; class GtIssueFormScreen extends StatefulWidget { + const GtIssueFormScreen(this.owner, this.name); final String owner; final String name; - const GtIssueFormScreen(this.owner, this.name); @override _GtIssueFormScreenState createState() => _GtIssueFormScreenState(); diff --git a/lib/screens/gt_issues.dart b/lib/screens/gt_issues.dart index 5f3e6aa..961863c 100644 --- a/lib/screens/gt_issues.dart +++ b/lib/screens/gt_issues.dart @@ -10,10 +10,10 @@ import 'package:git_touch/widgets/issue_item.dart'; import 'package:provider/provider.dart'; class GtIssuesScreen extends StatelessWidget { + const GtIssuesScreen(this.owner, this.name, {this.isPr = false}); final String owner; final String name; final bool isPr; - const GtIssuesScreen(this.owner, this.name, {this.isPr = false}); @override Widget build(BuildContext context) { diff --git a/lib/screens/gt_object.dart b/lib/screens/gt_object.dart index c003e24..93dcfdf 100644 --- a/lib/screens/gt_object.dart +++ b/lib/screens/gt_object.dart @@ -12,10 +12,10 @@ import 'package:git_touch/widgets/object_tree.dart'; import 'package:provider/provider.dart'; class GtObjectScreen extends StatelessWidget { + const GtObjectScreen(this.owner, this.name, {this.path}); final String owner; final String name; final String? path; - const GtObjectScreen(this.owner, this.name, {this.path}); @override Widget build(BuildContext context) { diff --git a/lib/screens/gt_orgs.dart b/lib/screens/gt_orgs.dart index 5baf888..1ab3add 100644 --- a/lib/screens/gt_orgs.dart +++ b/lib/screens/gt_orgs.dart @@ -8,9 +8,9 @@ import 'package:git_touch/widgets/user_item.dart'; import 'package:provider/provider.dart'; class GtOrgsScreen extends StatelessWidget { - final String api; const GtOrgsScreen() : api = '/orgs'; const GtOrgsScreen.ofUser(String login) : api = '/users/$login/orgs'; + final String api; @override Widget build(BuildContext context) { diff --git a/lib/screens/gt_repo.dart b/lib/screens/gt_repo.dart index d7af3e9..996a80f 100644 --- a/lib/screens/gt_repo.dart +++ b/lib/screens/gt_repo.dart @@ -18,9 +18,9 @@ import 'package:provider/provider.dart'; import 'package:tuple/tuple.dart'; class GtRepoScreen extends StatelessWidget { + const GtRepoScreen(this.owner, this.name); final String owner; final String name; - const GtRepoScreen(this.owner, this.name); @override Widget build(BuildContext context) { diff --git a/lib/screens/gt_repos.dart b/lib/screens/gt_repos.dart index 2a5f390..41ac7c0 100644 --- a/lib/screens/gt_repos.dart +++ b/lib/screens/gt_repos.dart @@ -8,8 +8,6 @@ import 'package:provider/provider.dart'; import 'package:timeago/timeago.dart' as timeago; class GtReposScreen extends StatelessWidget { - final String api; - final String title; const GtReposScreen(String owner) : api = '/users/$owner/repos', @@ -23,6 +21,8 @@ class GtReposScreen extends StatelessWidget { const GtReposScreen.forks(String owner, String repo) : api = '/repos/$owner/$repo/forks', title = 'Forks'; + final String api; + final String title; @override Widget build(BuildContext context) { diff --git a/lib/screens/gt_user.dart b/lib/screens/gt_user.dart index 915bc5c..2a4a90f 100644 --- a/lib/screens/gt_user.dart +++ b/lib/screens/gt_user.dart @@ -24,9 +24,9 @@ class GtUserScreenPayload { } class GtUserScreen extends StatelessWidget { + const GtUserScreen(this.login, {this.isViewer = false}); final String login; final bool isViewer; - const GtUserScreen(this.login, {this.isViewer = false}); static List> normalizeHeatmap(List userHeatmap) { final heatmapItems = [ diff --git a/lib/screens/gt_users.dart b/lib/screens/gt_users.dart index 658844d..b2dacc3 100644 --- a/lib/screens/gt_users.dart +++ b/lib/screens/gt_users.dart @@ -8,8 +8,6 @@ import 'package:provider/provider.dart'; import 'package:timeago/timeago.dart' as timeago; class GtUsersScreen extends StatelessWidget { - final String api; - final String title; const GtUsersScreen.followers(String login) : api = '/users/$login/followers', @@ -26,6 +24,8 @@ class GtUsersScreen extends StatelessWidget { const GtUsersScreen.watchers(String owner, String repo) : api = '/repos/$owner/$repo/subscribers', title = 'Watchers'; + final String api; + final String title; @override Widget build(BuildContext context) { diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index 628e5ad..944dccd 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -129,9 +129,9 @@ bool isNotNullOrEmpty(String? text) { // TODO: Primer class PrimerBranchName extends StatelessWidget { - final String? name; const PrimerBranchName(this.name); + final String? name; static const branchBgColor = Color(0xffeaf5ff); @@ -180,13 +180,13 @@ int sortByKey(T key, T a, T b) { const TOTAL_COUNT_FALLBACK = 999; // TODO: class ListPayload { - K cursor; - bool hasMore; - Iterable items; ListPayload({ required this.cursor, required this.hasMore, required this.items, }); + K cursor; + bool hasMore; + Iterable items; } diff --git a/lib/widgets/action_button.dart b/lib/widgets/action_button.dart index 850bec1..cb8051f 100644 --- a/lib/widgets/action_button.dart +++ b/lib/widgets/action_button.dart @@ -5,15 +5,15 @@ import 'package:provider/provider.dart'; import 'package:share_plus/share_plus.dart'; class ActionItem { - String? text; - bool danger; - void Function(BuildContext context)? onTap; ActionItem({ required this.text, this.onTap, this.danger = false, }); + String? text; + bool danger; + void Function(BuildContext context)? onTap; static List getUrlActions(String? url) { return [ @@ -33,11 +33,7 @@ class ActionItem { } } -class ActionButton extends StatelessWidget { - final String title; - final List items; - final IconData iconData; - final int? selected; // TODO: selected, font bold +class ActionButton extends StatelessWidget { // TODO: selected, font bold const ActionButton({ required this.title, @@ -45,6 +41,10 @@ class ActionButton extends StatelessWidget { this.iconData = Ionicons.ellipsis_horizontal, this.selected, }); + final String title; + final List items; + final IconData iconData; + final int? selected; @override Widget build(BuildContext context) { diff --git a/lib/widgets/action_entry.dart b/lib/widgets/action_entry.dart index 9943e97..cfda8a4 100644 --- a/lib/widgets/action_entry.dart +++ b/lib/widgets/action_entry.dart @@ -3,10 +3,10 @@ import 'package:git_touch/models/theme.dart'; import 'package:provider/provider.dart'; class ActionEntry extends StatelessWidget { + const ActionEntry({this.url, this.iconData, this.onTap}); final IconData? iconData; final String? url; final VoidCallback? onTap; - const ActionEntry({this.url, this.iconData, this.onTap}); @override Widget build(BuildContext context) { diff --git a/lib/widgets/app_bar_title.dart b/lib/widgets/app_bar_title.dart index 8592d2f..6a5fdab 100644 --- a/lib/widgets/app_bar_title.dart +++ b/lib/widgets/app_bar_title.dart @@ -1,9 +1,9 @@ import 'package:flutter/widgets.dart'; class AppBarTitle extends StatelessWidget { - final String? text; const AppBarTitle(this.text); + final String? text; @override Widget build(BuildContext context) { diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index d90a541..238f3e7 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -14,10 +14,6 @@ class AvatarSize { } class Avatar extends StatelessWidget { - final String? url; - final double size; - final String? linkUrl; - final BorderRadius? borderRadius; const Avatar({ required this.url, @@ -25,6 +21,10 @@ class Avatar extends StatelessWidget { this.linkUrl, this.borderRadius, }); + final String? url; + final double size; + final String? linkUrl; + final BorderRadius? borderRadius; @override Widget build(BuildContext context) { diff --git a/lib/widgets/blob_view.dart b/lib/widgets/blob_view.dart index 46856c2..d8f57fb 100644 --- a/lib/widgets/blob_view.dart +++ b/lib/widgets/blob_view.dart @@ -11,16 +11,16 @@ import 'package:git_touch/widgets/markdown_view.dart'; import 'package:provider/provider.dart'; class BlobView extends StatelessWidget { - final String? name; - final String? text; - final String? base64Text; - final String? networkUrl; const BlobView( this.name, { this.text, this.base64Text, this.networkUrl, }); + final String? name; + final String? text; + final String? base64Text; + final String? networkUrl; String get _text => text ?? base64Text!.base64ToUtf8; diff --git a/lib/widgets/border_view.dart b/lib/widgets/border_view.dart index 1b6b960..8c898cc 100644 --- a/lib/widgets/border_view.dart +++ b/lib/widgets/border_view.dart @@ -3,13 +3,13 @@ import 'package:git_touch/models/theme.dart'; import 'package:provider/provider.dart'; class BorderView extends StatelessWidget { - final double? height; - final double leftPadding; const BorderView({ this.height, this.leftPadding = 0, }); + final double? height; + final double leftPadding; @override Widget build(BuildContext context) { diff --git a/lib/widgets/comment_item.dart b/lib/widgets/comment_item.dart index 237360c..da0ea31 100644 --- a/lib/widgets/comment_item.dart +++ b/lib/widgets/comment_item.dart @@ -15,24 +15,21 @@ import 'package:git_touch/widgets/link.dart'; import 'package:git_touch/widgets/user_name.dart'; class EmojiPayload { - GReactionContent key; - String text; - int count; - bool reacted; EmojiPayload({ required this.key, required this.text, required this.count, required this.reacted, }); + GReactionContent key; + String text; + int count; + bool reacted; } typedef EmojiUpdateCallaback = void Function(GReactionContent data); class GhEmojiAction extends StatefulWidget { - final String? id; - final Iterable items; - final EmojiUpdateCallaback onReaction; GhEmojiAction(this.id, GReactableParts r, this.onReaction) : items = [ @@ -85,6 +82,9 @@ class GhEmojiAction extends StatefulWidget { reacted: r.EYES.viewerHasReacted, ), ]; + final String? id; + final Iterable items; + final EmojiUpdateCallaback onReaction; @override _GhEmojiActionState createState() => _GhEmojiActionState(); } @@ -173,14 +173,17 @@ mutation { } } -class CommentItem extends StatelessWidget { - final Avatar avatar; - final String? login; - final DateTime? createdAt; - final String? body; - final String prefix; - final List? widgets; - final List? commentActionItemList; +class CommentItem extends StatelessWidget { // TODO + + const CommentItem({ + required this.avatar, + required this.login, + required this.createdAt, + required this.body, + required this.prefix, + this.widgets, + this.commentActionItemList, + }); // p.author could be null (deleted user) CommentItem.gql( @@ -195,17 +198,14 @@ class CommentItem extends StatelessWidget { body = p.body, widgets = [GhEmojiAction(p.id, r, onReaction)], prefix = 'github', - commentActionItemList = []; // TODO - - const CommentItem({ - required this.avatar, - required this.login, - required this.createdAt, - required this.body, - required this.prefix, - this.widgets, - this.commentActionItemList, - }); + commentActionItemList = []; + final Avatar avatar; + final String? login; + final DateTime? createdAt; + final String? body; + final String prefix; + final List? widgets; + final List? commentActionItemList; @override Widget build(BuildContext context) { diff --git a/lib/widgets/commit_item.dart b/lib/widgets/commit_item.dart index 26edd6b..986cb20 100644 --- a/lib/widgets/commit_item.dart +++ b/lib/widgets/commit_item.dart @@ -7,13 +7,6 @@ import 'package:provider/provider.dart'; import 'package:timeago/timeago.dart' as timeago; class CommitItem extends StatelessWidget { - final String? url; - final String? avatarUrl; - final String? avatarLink; - final String? message; - final String? author; - final DateTime? createdAt; - final List? widgets; const CommitItem({ required this.url, required this.avatarUrl, @@ -23,6 +16,13 @@ class CommitItem extends StatelessWidget { required this.createdAt, this.widgets, }); + final String? url; + final String? avatarUrl; + final String? avatarLink; + final String? message; + final String? author; + final DateTime? createdAt; + final List? widgets; @override Widget build(BuildContext context) { final theme = Provider.of(context); diff --git a/lib/widgets/contribution.dart b/lib/widgets/contribution.dart index 2baaecd..7470a3c 100644 --- a/lib/widgets/contribution.dart +++ b/lib/widgets/contribution.dart @@ -10,8 +10,8 @@ const contributionEmptyColor = '#ebedf0'; const contributionColors = ['#9be9a8', '#40c463', '#30a14e', '#216e39']; class HideScrollbar extends StatelessWidget { - final Widget? child; const HideScrollbar({Key? key, this.child}) : super(key: key); + final Widget? child; @override Widget build(BuildContext context) { @@ -23,19 +23,13 @@ class HideScrollbar extends StatelessWidget { } class ContributionDay { - String? hexColor; - int? count; ContributionDay({this.hexColor, this.count}) : assert(hexColor != null || count != null); + String? hexColor; + int? count; } class ContributionWidget extends StatelessWidget { - final Iterable>? weeks; - - static Color _revertColor(Color color) { - return Color.fromRGBO( - 0xff - color.red, 0xff - color.green, 0xff - color.blue, 1); - } ContributionWidget({required this.weeks}) { int? maxCount; @@ -60,6 +54,12 @@ class ContributionWidget extends StatelessWidget { } } } + final Iterable>? weeks; + + static Color _revertColor(Color color) { + return Color.fromRGBO( + 0xff - color.red, 0xff - color.green, 0xff - color.blue, 1); + } @override Widget build(BuildContext context) { diff --git a/lib/widgets/contributor_item.dart b/lib/widgets/contributor_item.dart index 626a931..9a79a2c 100644 --- a/lib/widgets/contributor_item.dart +++ b/lib/widgets/contributor_item.dart @@ -6,10 +6,6 @@ import 'package:git_touch/widgets/link.dart'; import 'package:provider/provider.dart'; class ContributorItem extends StatelessWidget { - final String? login; - final String? avatarUrl; - final int? commits; - final String url; const ContributorItem({ required this.login, @@ -17,6 +13,10 @@ class ContributorItem extends StatelessWidget { required this.commits, required this.url, }); + final String? login; + final String? avatarUrl; + final int? commits; + final String url; @override Widget build(BuildContext context) { diff --git a/lib/widgets/entry_item.dart b/lib/widgets/entry_item.dart index 3b62fa1..7a720f2 100644 --- a/lib/widgets/entry_item.dart +++ b/lib/widgets/entry_item.dart @@ -5,15 +5,15 @@ import 'package:provider/provider.dart'; import 'package:git_touch/widgets/link.dart'; class EntryItem extends StatelessWidget { - final int? count; - final String text; - final String? url; const EntryItem({ required this.text, this.count, this.url, }); + final int? count; + final String text; + final String? url; @override Widget build(BuildContext context) { diff --git a/lib/widgets/error_reload.dart b/lib/widgets/error_reload.dart index 464a41a..2a0165f 100644 --- a/lib/widgets/error_reload.dart +++ b/lib/widgets/error_reload.dart @@ -2,10 +2,10 @@ import 'package:flutter/widgets.dart'; import 'package:git_touch/utils/utils.dart'; class ErrorReload extends StatelessWidget { - final String text; - final Function onTap; const ErrorReload({required this.text, required this.onTap}); + final String text; + final Function onTap; @override Widget build(BuildContext context) { diff --git a/lib/widgets/event_item.dart b/lib/widgets/event_item.dart index 483f5ad..04262ef 100644 --- a/lib/widgets/event_item.dart +++ b/lib/widgets/event_item.dart @@ -13,9 +13,9 @@ import 'package:git_touch/widgets/link.dart'; import 'package:git_touch/widgets/avatar.dart'; class EventItem extends StatelessWidget { - final GithubEvent e; const EventItem(this.e); + final GithubEvent e; InlineSpan _buildLinkSpan(BuildContext context, String? text, String? url) { final theme = Provider.of(context); diff --git a/lib/widgets/files_item.dart b/lib/widgets/files_item.dart index c27c600..f780ef2 100644 --- a/lib/widgets/files_item.dart +++ b/lib/widgets/files_item.dart @@ -7,11 +7,6 @@ import 'package:git_touch/utils/utils.dart'; import 'package:provider/provider.dart'; class FilesItem extends StatelessWidget { - final String? filename; - final String? status; - final int? additions; - final int? deletions; - final String? patch; const FilesItem({ required this.filename, @@ -20,6 +15,11 @@ class FilesItem extends StatelessWidget { required this.additions, required this.patch, }); + final String? filename; + final String? status; + final int? additions; + final int? deletions; + final String? patch; @override Widget build(BuildContext context) { diff --git a/lib/widgets/gists_item.dart b/lib/widgets/gists_item.dart index f13cf89..8a1a1a9 100644 --- a/lib/widgets/gists_item.dart +++ b/lib/widgets/gists_item.dart @@ -9,13 +9,6 @@ import 'package:provider/provider.dart'; import 'package:timeago/timeago.dart' as timeago; class GistsItem extends StatelessWidget { - final String? description; - final String login; - final List filenames; - final String? language; - final String? avatarUrl; - final DateTime? updatedAt; - final String? id; const GistsItem({ required this.description, @@ -26,6 +19,13 @@ class GistsItem extends StatelessWidget { required this.updatedAt, required this.id, }); + final String? description; + final String login; + final List filenames; + final String? language; + final String? avatarUrl; + final DateTime? updatedAt; + final String? id; @override Widget build(BuildContext context) { diff --git a/lib/widgets/hex_color_tag.dart b/lib/widgets/hex_color_tag.dart index be2fd73..a0a74a9 100644 --- a/lib/widgets/hex_color_tag.dart +++ b/lib/widgets/hex_color_tag.dart @@ -3,14 +3,14 @@ import 'package:flutter/widgets.dart'; import 'package:from_css_color/from_css_color.dart'; class HexColorTag extends StatelessWidget { - final String name; - final String color; const HexColorTag({ super.key, required this.name, required this.color, }); + final String name; + final String color; @override Widget build(BuildContext context) { diff --git a/lib/widgets/html_view.dart b/lib/widgets/html_view.dart index 275bdb1..a258bfa 100644 --- a/lib/widgets/html_view.dart +++ b/lib/widgets/html_view.dart @@ -6,10 +6,10 @@ import 'package:git_touch/utils/utils.dart'; import 'package:webview_flutter/webview_flutter.dart'; class HtmlView extends StatefulWidget { - final String html; HtmlView(String text, {String? cssText, List cssLinks = const []}) : html = '${cssLinks.map((link) => '').join('')}$text'; + final String html; @override _HtmlViewState createState() => _HtmlViewState(); diff --git a/lib/widgets/issue_icon.dart b/lib/widgets/issue_icon.dart index e37b312..9a9985d 100644 --- a/lib/widgets/issue_icon.dart +++ b/lib/widgets/issue_icon.dart @@ -10,10 +10,10 @@ enum IssueIconState { } class IssueIcon extends StatelessWidget { - final IssueIconState state; - final double? size; const IssueIcon(this.state, {this.size}); + final IssueIconState state; + final double? size; @override Widget build(BuildContext context) { diff --git a/lib/widgets/issue_item.dart b/lib/widgets/issue_item.dart index f697e06..6580088 100644 --- a/lib/widgets/issue_item.dart +++ b/lib/widgets/issue_item.dart @@ -34,15 +34,6 @@ comments { '''; class IssueItem extends StatelessWidget { - final String? url; - final String subtitle; - final String? title; - final int? commentCount; - final DateTime? updatedAt; - final String? avatarUrl; - final String? author; - final Widget? labels; - final bool isPr; const IssueItem({ required this.url, @@ -55,6 +46,15 @@ class IssueItem extends StatelessWidget { this.labels, this.isPr = false, }); + final String? url; + final String subtitle; + final String? title; + final int? commentCount; + final DateTime? updatedAt; + final String? avatarUrl; + final String? author; + final Widget? labels; + final bool isPr; @override Widget build(BuildContext context) { diff --git a/lib/widgets/language_bar.dart b/lib/widgets/language_bar.dart index 46329e8..583968e 100644 --- a/lib/widgets/language_bar.dart +++ b/lib/widgets/language_bar.dart @@ -7,19 +7,19 @@ import 'package:github/github.dart' as github; import 'package:provider/provider.dart'; class LanguageBarItem { - String? name; - String? hexColor; - double? ratio; LanguageBarItem({ required this.name, required this.ratio, String? hexColor, }) : hexColor = hexColor ?? github.languageColors[name!]; + String? name; + String? hexColor; + double? ratio; } class LanguageBar extends StatelessWidget { - final List items; const LanguageBar(this.items); + final List items; @override Widget build(BuildContext context) { diff --git a/lib/widgets/link.dart b/lib/widgets/link.dart index a202c7c..e95ded7 100644 --- a/lib/widgets/link.dart +++ b/lib/widgets/link.dart @@ -5,10 +5,10 @@ import 'package:provider/provider.dart'; // TODO: class CupertinoLink extends StatefulWidget { - final Widget? child; - final Function? onTap; const CupertinoLink({this.child, this.onTap}); + final Widget? child; + final Function? onTap; @override _CupertinoLinkState createState() => _CupertinoLinkState(); @@ -48,10 +48,6 @@ class _CupertinoLinkState extends State { } class LinkWidget extends StatelessWidget { - final Widget child; - final String? url; - final Function? onTap; - final Function? onLongPress; const LinkWidget({ required this.child, @@ -59,6 +55,10 @@ class LinkWidget extends StatelessWidget { this.onTap, this.onLongPress, }); + final Widget child; + final String? url; + final Function? onTap; + final Function? onLongPress; @override Widget build(BuildContext context) { diff --git a/lib/widgets/list_group.dart b/lib/widgets/list_group.dart index c3e977b..62c62f9 100644 --- a/lib/widgets/list_group.dart +++ b/lib/widgets/list_group.dart @@ -5,10 +5,6 @@ import 'package:git_touch/models/theme.dart'; import 'package:git_touch/widgets/empty.dart'; class ListGroup extends StatelessWidget { - final Widget title; - final List items; - final Widget Function(T item, int index) itemBuilder; - final EdgeInsetsGeometry padding; const ListGroup({ required this.title, @@ -16,6 +12,10 @@ class ListGroup extends StatelessWidget { required this.itemBuilder, this.padding = const EdgeInsets.only(left: 10, right: 10, bottom: 10), }); + final Widget title; + final List items; + final Widget Function(T item, int index) itemBuilder; + final EdgeInsetsGeometry padding; Widget _buildItem(BuildContext context, MapEntry entry) { final theme = Provider.of(context); diff --git a/lib/widgets/loading.dart b/lib/widgets/loading.dart index 0684664..2262649 100644 --- a/lib/widgets/loading.dart +++ b/lib/widgets/loading.dart @@ -1,9 +1,9 @@ import 'package:flutter/cupertino.dart'; class Loading extends StatelessWidget { - final bool more; const Loading({this.more = false}); + final bool more; @override Widget build(BuildContext context) { diff --git a/lib/widgets/markdown_view.dart b/lib/widgets/markdown_view.dart index 7100731..0f4adc1 100644 --- a/lib/widgets/markdown_view.dart +++ b/lib/widgets/markdown_view.dart @@ -9,7 +9,6 @@ import 'package:provider/provider.dart'; import 'package:uri/uri.dart'; class MarkdownViewData { - final Future future; MarkdownViewData( BuildContext context, { required Future Function() md, @@ -17,11 +16,12 @@ class MarkdownViewData { }) : future = context.read().shouldUseMarkdownFlutterView ? md() : html(); + final Future future; } class MarkdownView extends StatelessWidget { - final MarkdownViewData? data; const MarkdownView(this.data); + final MarkdownViewData? data; @override Widget build(BuildContext context) { @@ -57,8 +57,8 @@ class MarkdownView extends StatelessWidget { // TODO: Safari table width class MarkdownWebView extends StatelessWidget { - final String? html; const MarkdownWebView(this.html); + final String? html; @override Widget build(BuildContext context) { @@ -82,15 +82,15 @@ html { } class MarkdownFlutterView extends StatelessWidget { - final String? text; - final List? basePaths; - final EdgeInsetsGeometry padding; const MarkdownFlutterView( this.text, { this.basePaths, this.padding = const EdgeInsets.all(12), }); + final String? text; + final List? basePaths; + final EdgeInsetsGeometry padding; static Map? matchPattern(String url, String pattern) { var uri = Uri.parse(url); diff --git a/lib/widgets/mutation_button.dart b/lib/widgets/mutation_button.dart index 07569b4..a7fb55d 100644 --- a/lib/widgets/mutation_button.dart +++ b/lib/widgets/mutation_button.dart @@ -2,9 +2,6 @@ import 'package:antd_mobile/antd_mobile.dart'; import 'package:flutter/cupertino.dart'; class MutationButton extends StatelessWidget { - final bool active; - final String text; - final VoidCallback onTap; const MutationButton({ super.key, @@ -12,6 +9,9 @@ class MutationButton extends StatelessWidget { required this.text, required this.onTap, }); + final bool active; + final String text; + final VoidCallback onTap; @override Widget build(BuildContext context) { diff --git a/lib/widgets/notification_item.dart b/lib/widgets/notification_item.dart index bff1de0..7980fef 100644 --- a/lib/widgets/notification_item.dart +++ b/lib/widgets/notification_item.dart @@ -9,14 +9,14 @@ import 'package:provider/provider.dart'; import 'package:git_touch/models/theme.dart'; class NotificationItem extends StatefulWidget { - final GithubNotificationItem payload; - final Function markAsRead; const NotificationItem({ Key? key, required this.payload, required this.markAsRead, }) : super(key: key); + final GithubNotificationItem payload; + final Function markAsRead; @override _NotificationItemState createState() => _NotificationItemState(); diff --git a/lib/widgets/release_item.dart b/lib/widgets/release_item.dart index 9016b46..16ffc12 100644 --- a/lib/widgets/release_item.dart +++ b/lib/widgets/release_item.dart @@ -10,13 +10,6 @@ import 'package:provider/provider.dart'; import 'package:timeago/timeago.dart' as timeago; class ReleaseItem extends StatelessWidget { - final String? login; - final DateTime? publishedAt; - final String? name; - final String? avatarUrl; - final String? tagName; - final String? description; - final GReleasesData_repository_releases_nodes_releaseAssets? releaseAssets; const ReleaseItem( {required this.login, @@ -26,6 +19,13 @@ class ReleaseItem extends StatelessWidget { required this.avatarUrl, required this.description, this.releaseAssets}); + final String? login; + final DateTime? publishedAt; + final String? name; + final String? avatarUrl; + final String? tagName; + final String? description; + final GReleasesData_repository_releases_nodes_releaseAssets? releaseAssets; @override Widget build(BuildContext context) { diff --git a/lib/widgets/repo_header.dart b/lib/widgets/repo_header.dart index 85319c0..2d1b9fe 100644 --- a/lib/widgets/repo_header.dart +++ b/lib/widgets/repo_header.dart @@ -6,14 +6,6 @@ import 'package:git_touch/widgets/link.dart'; import 'package:provider/provider.dart'; class RepoHeader extends StatelessWidget { - final String? avatarUrl; - final String? avatarLink; - final String? owner; - final String? name; - final String? description; - final String? homepageUrl; - final List? actions; - final List? trailings; const RepoHeader({ required this.avatarUrl, @@ -25,6 +17,14 @@ class RepoHeader extends StatelessWidget { this.actions, this.trailings, }); + final String? avatarUrl; + final String? avatarLink; + final String? owner; + final String? name; + final String? description; + final String? homepageUrl; + final List? actions; + final List? trailings; @override Widget build(BuildContext context) { diff --git a/lib/widgets/repository_item.dart b/lib/widgets/repository_item.dart index 1fb2be8..a8bdad9 100644 --- a/lib/widgets/repository_item.dart +++ b/lib/widgets/repository_item.dart @@ -14,18 +14,6 @@ import 'package:provider/provider.dart'; import 'package:timeago/timeago.dart' as timeago; class RepositoryItem extends StatelessWidget { - final String? owner; - final String? avatarUrl; - final String? name; - final String? description; - final IconData? iconData; - final int? starCount; - final int? forkCount; - final String? primaryLanguageName; - final String? primaryLanguageColor; - final String? note; - final String url; - final String? avatarLink; const RepositoryItem({ required this.owner, @@ -120,6 +108,18 @@ class RepositoryItem extends StatelessWidget { isFork: v.isFork, ); } + final String? owner; + final String? avatarUrl; + final String? name; + final String? description; + final IconData? iconData; + final int? starCount; + final int? forkCount; + final String? primaryLanguageName; + final String? primaryLanguageColor; + final String? note; + final String url; + final String? avatarLink; static IconData? _buildIconData(bool? isPrivate, bool? isFork) { if (isPrivate == true) return Octicons.lock; diff --git a/lib/widgets/table_view.dart b/lib/widgets/table_view.dart index 04741f8..6275033 100644 --- a/lib/widgets/table_view.dart +++ b/lib/widgets/table_view.dart @@ -7,9 +7,9 @@ import 'package:git_touch/widgets/link.dart'; import 'package:provider/provider.dart'; class TableViewHeader extends StatelessWidget { - final String? title; const TableViewHeader(this.title, {super.key}); + final String? title; @override Widget build(BuildContext context) { diff --git a/lib/widgets/text_field.dart b/lib/widgets/text_field.dart index f04a9f3..57afd74 100644 --- a/lib/widgets/text_field.dart +++ b/lib/widgets/text_field.dart @@ -3,9 +3,9 @@ import 'package:git_touch/models/theme.dart'; import 'package:provider/provider.dart'; class MyTextField extends StatelessWidget { + const MyTextField({required this.controller, this.placeholder}); final TextEditingController controller; final String? placeholder; - const MyTextField({required this.controller, this.placeholder}); @override Widget build(BuildContext context) { diff --git a/lib/widgets/text_with_at.dart b/lib/widgets/text_with_at.dart index 6e12faf..d001b8b 100644 --- a/lib/widgets/text_with_at.dart +++ b/lib/widgets/text_with_at.dart @@ -2,10 +2,6 @@ import 'package:flutter/widgets.dart'; import 'package:git_touch/utils/utils.dart'; class TextWithAt extends StatelessWidget { - final String text; - final String Function(String text) linkFactory; - final TextStyle? style; - final bool oneLine; const TextWithAt({ required this.text, @@ -13,6 +9,10 @@ class TextWithAt extends StatelessWidget { this.style, this.oneLine = false, }); + final String text; + final String Function(String text) linkFactory; + final TextStyle? style; + final bool oneLine; static final _reg = RegExp(r'@[A-Za-z-]+'); diff --git a/lib/widgets/timeline_item.dart b/lib/widgets/timeline_item.dart index bd4e39d..9efe480 100644 --- a/lib/widgets/timeline_item.dart +++ b/lib/widgets/timeline_item.dart @@ -16,10 +16,6 @@ TextSpan createUserSpan(BuildContext context, String? login) { } class TimelineEventItem extends StatelessWidget { - final String? actor; - final IconData iconData; - final Color iconColor; - final TextSpan? textSpan; const TimelineEventItem({ this.actor, @@ -27,6 +23,10 @@ class TimelineEventItem extends StatelessWidget { this.iconColor = Colors.grey, this.textSpan, }); + final String? actor; + final IconData iconData; + final Color iconColor; + final TextSpan? textSpan; @override Widget build(BuildContext context) { @@ -56,8 +56,8 @@ class TimelineEventItem extends StatelessWidget { } class TimelineItem extends StatelessWidget { - final dynamic node; const TimelineItem(this.node); + final dynamic node; Widget _buildFallback(String? type, BuildContext context) { return TimelineEventItem( diff --git a/lib/widgets/user_header.dart b/lib/widgets/user_header.dart index 9a42f13..5cbae18 100644 --- a/lib/widgets/user_header.dart +++ b/lib/widgets/user_header.dart @@ -6,13 +6,6 @@ import 'package:git_touch/widgets/mutation_button.dart'; import 'package:provider/provider.dart'; class UserHeader extends StatelessWidget { - final String? avatarUrl; - final String? name; - final String? login; - final DateTime? createdAt; - final String? bio; - final bool isViewer; - final List rightWidgets; const UserHeader({ super.key, @@ -24,6 +17,13 @@ class UserHeader extends StatelessWidget { this.isViewer = false, this.rightWidgets = const [], }); + final String? avatarUrl; + final String? name; + final String? login; + final DateTime? createdAt; + final String? bio; + final bool isViewer; + final List rightWidgets; @override Widget build(BuildContext context) { diff --git a/lib/widgets/user_item.dart b/lib/widgets/user_item.dart index 500856b..5a52f61 100644 --- a/lib/widgets/user_item.dart +++ b/lib/widgets/user_item.dart @@ -14,9 +14,9 @@ const userGqlChunk = ''' '''; class GhBioWidget extends StatelessWidget { + const GhBioWidget({this.location, required this.createdAt}); final String? location; final DateTime createdAt; - const GhBioWidget({this.location, required this.createdAt}); @override Widget build(BuildContext context) { @@ -52,11 +52,6 @@ class GhBioWidget extends StatelessWidget { } class UserItem extends StatelessWidget { - final String? login; - final String? name; - final String? avatarUrl; - final Widget? bio; - final String url; const UserItem.github({ required this.login, @@ -122,6 +117,11 @@ class UserItem extends StatelessWidget { required this.avatarUrl, required this.bio, }) : url = '/gogs/$login'; + final String? login; + final String? name; + final String? avatarUrl; + final Widget? bio; + final String url; @override Widget build(BuildContext context) { diff --git a/lib/widgets/user_name.dart b/lib/widgets/user_name.dart index afd11d7..a7bfe70 100644 --- a/lib/widgets/user_name.dart +++ b/lib/widgets/user_name.dart @@ -4,10 +4,10 @@ import 'package:git_touch/widgets/link.dart'; import 'package:provider/provider.dart'; class UserName extends StatelessWidget { - final String? login; - final String prefix; const UserName(this.login, this.prefix); + final String? login; + final String prefix; @override Widget build(BuildContext context) {