diff --git a/lib/router.dart b/lib/router.dart index b8d25646..196bd3ef 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -154,7 +154,8 @@ class GithubRouter { }); static final repo = RouterScreen('/:owner/:name', (context, parameters) { if (parameters['ref'] == null) { - return GhRepoScreen(parameters['owner']!.first, parameters['name']!.first); + return GhRepoScreen( + parameters['owner']!.first, parameters['name']!.first); } else { return GhRepoScreen(parameters['owner']!.first, parameters['name']!.first, branch: parameters['ref']!.first); @@ -182,8 +183,8 @@ class GithubRouter { }); static final issues = RouterScreen( '/:owner/:name/issues', - (context, parameters) => - GhIssuesScreen(parameters['owner']!.first, parameters['name']!.first)); + (context, parameters) => GhIssuesScreen( + parameters['owner']!.first, parameters['name']!.first)); static final pulls = RouterScreen( '/:owner/:name/pulls', (context, parameters) => @@ -263,8 +264,10 @@ class GitlabRouter { GitlabRouter.issueAdd, GitlabRouter.issue, ]; - static final user = RouterScreen('/user/:id', - (context, parameters) => GlUserScreen(int.parse(parameters['id']!.first))); + static final user = RouterScreen( + '/user/:id', + (context, parameters) => + GlUserScreen(int.parse(parameters['id']!.first))); static final group = RouterScreen( '/group/:id', (context, parameters) => @@ -316,8 +319,8 @@ class GitlabRouter { }); static final commit = RouterScreen( '/projects/:id/commit/:sha', - (context, parameters) => - GlCommitScreen(parameters['id']!.first, sha: parameters['sha']!.first)); + (context, parameters) => GlCommitScreen(parameters['id']!.first, + sha: parameters['sha']!.first)); static final projectMembers = RouterScreen( '/projects/:id/members', (context, parameters) => @@ -412,12 +415,12 @@ class GiteaRouter { }); static final commits = RouterScreen( '/:owner/:name/commits', - (context, parameters) => - GtCommitsScreen(parameters['owner']!.first, parameters['name']!.first)); + (context, parameters) => GtCommitsScreen( + parameters['owner']!.first, parameters['name']!.first)); static final issues = RouterScreen( '/:owner/:name/issues', - (context, parameters) => - GtIssuesScreen(parameters['owner']!.first, parameters['name']!.first)); + (context, parameters) => GtIssuesScreen( + parameters['owner']!.first, parameters['name']!.first)); static final pulls = RouterScreen( '/:owner/:name/pulls', (context, parameters) => GtIssuesScreen( @@ -458,7 +461,8 @@ class BitbucketRouter { isTeam: parameters['team']!.first == '1')); static final repo = RouterScreen('/:owner/:name', (context, parameters) { if (parameters['branch'] == null) { - return BbRepoScreen(parameters['owner']!.first, parameters['name']!.first); + return BbRepoScreen( + parameters['owner']!.first, parameters['name']!.first); } else { return BbRepoScreen(parameters['owner']!.first, parameters['name']!.first, branch: parameters['branch']!.first); @@ -475,8 +479,8 @@ class BitbucketRouter { ); static final issues = RouterScreen( '/:owner/:name/issues', - (context, parameters) => - BbIssuesScreen(parameters['owner']!.first, parameters['name']!.first)); + (context, parameters) => BbIssuesScreen( + parameters['owner']!.first, parameters['name']!.first)); static final commits = RouterScreen( '/:owner/:name/commits/:ref', (context, parameters) => BbCommitsScreen(parameters['owner']!.first, @@ -549,7 +553,8 @@ class GiteeRouter { return GeRepoScreen( parameters['owner']!.first, parameters['name']!.first); } else { - return GeRepoScreen(parameters['owner']!.first, parameters['name']!.first, + return GeRepoScreen( + parameters['owner']!.first, parameters['name']!.first, branch: parameters['branch']!.first); } }, @@ -597,7 +602,8 @@ class GiteeRouter { static final issues = RouterScreen( '/:owner/:name/issues', (context, parameters) { - return GeIssuesScreen(parameters['owner']!.first, parameters['name']!.first, + return GeIssuesScreen( + parameters['owner']!.first, parameters['name']!.first, isPr: false); }, ); @@ -610,7 +616,8 @@ class GiteeRouter { static final pulls = RouterScreen( '/:owner/:name/pulls', (context, parameters) { - return GePullsScreen(parameters['owner']!.first, parameters['name']!.first, + return GePullsScreen( + parameters['owner']!.first, parameters['name']!.first, isPr: true); }, ); @@ -701,7 +708,8 @@ class GogsRouter { return GoRepoScreen( parameters['owner']!.first, parameters['name']!.first); } else { - return GoRepoScreen(parameters['owner']!.first, parameters['name']!.first, + return GoRepoScreen( + parameters['owner']!.first, parameters['name']!.first, branch: parameters['branch']!.first); } }, @@ -722,6 +730,6 @@ class GogsRouter { branch: parameters['ref']?.first)); static final issues = RouterScreen( '/:owner/:name/issues', - (context, parameters) => - GoIssuesScreen(parameters['owner']!.first, parameters['name']!.first)); + (context, parameters) => GoIssuesScreen( + parameters['owner']!.first, parameters['name']!.first)); } diff --git a/lib/screens/ge_search.dart b/lib/screens/ge_search.dart index 0c14b68d..9c850137 100644 --- a/lib/screens/ge_search.dart +++ b/lib/screens/ge_search.dart @@ -25,7 +25,7 @@ class _GeSearchScreenState extends State { List _payloads = [[], [], []]; TextEditingController? _controller; - String get _keyword => _controller!.text?.trim() ?? ''; + String get _keyword => _controller!.text.trim(); @override void initState() { diff --git a/lib/screens/gh_events.dart b/lib/screens/gh_events.dart index 6fe28d1b..46f1ab61 100644 --- a/lib/screens/gh_events.dart +++ b/lib/screens/gh_events.dart @@ -22,7 +22,8 @@ class GhEventsScreen extends StatelessWidget { page = page ?? 1; final events = await context.read().ghClient!.getJSON( '/users/$login/events?page=$page&per_page=$pageSize', - convert: (dynamic vs) => [for (var v in vs) GithubEvent.fromJson(v)]); + convert: (dynamic vs) => + [for (var v in vs) GithubEvent.fromJson(v)]); return ListPayload( cursor: page + 1, hasMore: events.length == pageSize, diff --git a/lib/screens/gh_issue.dart b/lib/screens/gh_issue.dart index 6d757d3e..c8769688 100644 --- a/lib/screens/gh_issue.dart +++ b/lib/screens/gh_issue.dart @@ -102,11 +102,11 @@ class GhIssueScreen extends StatelessWidget { @override Widget build(BuildContext context) { - return LongListStatefulScaffold( + return LongListStatefulScaffold( title: Text('$owner/$name #$number'), trailingBuilder: (p) { - if (p.issueOrPullRequest!.G__typename == 'Issue') { - final d = p.issueOrPullRequest + if (p?.issueOrPullRequest!.G__typename == 'Issue') { + final d = p?.issueOrPullRequest as GIssueData_repository_issueOrPullRequest__asIssue; return ActionButton( title: 'Actions', @@ -126,7 +126,7 @@ class GhIssueScreen extends StatelessWidget { ], ); } else { - final d = p.issueOrPullRequest + final d = p?.issueOrPullRequest as GIssueData_repository_issueOrPullRequest__asPullRequest; return ActionButton( title: 'Actions', @@ -138,8 +138,8 @@ class GhIssueScreen extends StatelessWidget { }, headerBuilder: (p) { final theme = Provider.of(context); - if (p.issueOrPullRequest!.G__typename == 'Issue') { - final issue = p.issueOrPullRequest + if (p?.issueOrPullRequest!.G__typename == 'Issue') { + final issue = p?.issueOrPullRequest as GIssueData_repository_issueOrPullRequest__asIssue; return _buildHeader( @@ -204,7 +204,7 @@ class GhIssueScreen extends StatelessWidget { }), ); } else { - final pr = p.issueOrPullRequest + final pr = p?.issueOrPullRequest as GIssueData_repository_issueOrPullRequest__asPullRequest; return _buildHeader( context, @@ -257,10 +257,9 @@ class GhIssueScreen extends StatelessWidget { }, itemBuilder: (p) => TimelineItem(p), onRefresh: () async { - final res = - await (_queryIssue(context) as Future); - if (res.issueOrPullRequest!.G__typename == 'Issue') { - final issue = res.issueOrPullRequest + final res = await _queryIssue(context); + if (res?.issueOrPullRequest!.G__typename == 'Issue') { + final issue = res?.issueOrPullRequest as GIssueData_repository_issueOrPullRequest__asIssue; return LongListPayload( header: res, @@ -270,7 +269,7 @@ class GhIssueScreen extends StatelessWidget { trailingItems: [], ); } else { - final pr = res.issueOrPullRequest + final pr = res?.issueOrPullRequest as GIssueData_repository_issueOrPullRequest__asPullRequest; return LongListPayload( header: res, diff --git a/lib/screens/gh_repo.dart b/lib/screens/gh_repo.dart index 78d5896a..dea0265e 100644 --- a/lib/screens/gh_repo.dart +++ b/lib/screens/gh_repo.dart @@ -170,7 +170,7 @@ class GhRepoScreen extends StatelessWidget { SizedBox(width: 8), MutationButton( active: repo.viewerHasStarred, - text: repo.viewerHasStarred? 'Unstar' : 'Star', + text: repo.viewerHasStarred ? 'Unstar' : 'Star', onTap: () async { final activityApi = context.read().ghClient!.activity; @@ -232,7 +232,7 @@ class GhRepoScreen extends StatelessWidget { for (var edge in repo.languages!.edges!) LanguageBarItem( name: edge.node.name, - ratio: edge.size/ repo.languages!.totalSize, + ratio: edge.size / repo.languages!.totalSize, hexColor: edge.node.color, ) ]), @@ -270,7 +270,7 @@ class GhRepoScreen extends StatelessWidget { leftIconData: Octicons.history, text: Text(AppLocalizations.of(context)!.commits), rightWidget: Text( - ((ref.target as GRepoCommit).history?.totalCount ?? 0) + ((ref.target as GRepoCommit).history.totalCount) .toString()), url: '/github/$owner/$name/commits/${ref.name}', ), @@ -278,7 +278,7 @@ class GhRepoScreen extends StatelessWidget { TableViewItem( leftIconData: Octicons.git_branch, text: Text(AppLocalizations.of(context)!.branches), - rightWidget: Text(ref.name+ + rightWidget: Text(ref.name + ' • ' + numberFormat.format(repo.refs!.totalCount)), onTap: () async { diff --git a/lib/screens/gh_search.dart b/lib/screens/gh_search.dart index 53464266..bd48733b 100644 --- a/lib/screens/gh_search.dart +++ b/lib/screens/gh_search.dart @@ -25,7 +25,7 @@ class _GhSearchScreenState extends State { TextEditingController? _controller; - String get _keyword => _controller!.text?.trim() ?? ''; + String get _keyword => _controller!.text.trim(); @override void initState() { diff --git a/lib/screens/gh_user.dart b/lib/screens/gh_user.dart index 48c56a48..0d762dae 100644 --- a/lib/screens/gh_user.dart +++ b/lib/screens/gh_user.dart @@ -319,7 +319,8 @@ class GhUser extends StatelessWidget { if (p.viewerCanFollow) MutationButton( active: p.viewerIsFollowing, - text: p.viewerIsFollowing? AppLocalizations.of(context)!.unfollow + text: p.viewerIsFollowing + ? AppLocalizations.of(context)!.unfollow : AppLocalizations.of(context)!.follow, onTap: () async { if (p.viewerIsFollowing) { diff --git a/lib/screens/gl_issue.dart b/lib/screens/gl_issue.dart index 62ebc497..3d3f4e16 100644 --- a/lib/screens/gl_issue.dart +++ b/lib/screens/gl_issue.dart @@ -64,7 +64,8 @@ class GlIssueScreen extends StatelessWidget { padding: CommonStyle.padding, child: Text.rich( TextSpan(children: [ - WidgetSpan(child: Avatar(url: note.author!.avatarUrl)), + WidgetSpan( + child: Avatar(url: note.author!.avatarUrl)), TextSpan(text: note.author!.name), TextSpan(text: note.body), ]), diff --git a/lib/screens/gl_search.dart b/lib/screens/gl_search.dart index b2323448..66e39bc4 100644 --- a/lib/screens/gl_search.dart +++ b/lib/screens/gl_search.dart @@ -26,7 +26,7 @@ class _GlSearchScreenState extends State { TextEditingController? _controller; - String get _keyword => _controller!.text?.trim() ?? ''; + String get _keyword => _controller!.text.trim(); @override void initState() { diff --git a/lib/widgets/release_item.dart b/lib/widgets/release_item.dart index f8b0b401..15bbb821 100644 --- a/lib/widgets/release_item.dart +++ b/lib/widgets/release_item.dart @@ -61,8 +61,8 @@ class ReleaseItem extends StatelessWidget { color: theme.palette.secondaryText, fontSize: 16, ), - child: - Text(login! + " released " + timeago.format(publishedAt!)), + child: Text( + login! + " released " + timeago.format(publishedAt!)), ), ], ), diff --git a/lib/widgets/timeline_item.dart b/lib/widgets/timeline_item.dart index 28ee2352..c389ace7 100644 --- a/lib/widgets/timeline_item.dart +++ b/lib/widgets/timeline_item.dart @@ -264,7 +264,8 @@ class TimelineItem extends StatelessWidget { textSpan: TextSpan( children: [ TextSpan( - text: ' transferred this issue from ' + p.fromRepository!.name) + text: + ' transferred this issue from ' + p.fromRepository!.name) ], ), ); @@ -331,7 +332,8 @@ class TimelineItem extends StatelessWidget { return TimelineEventItem( actor: p.actor!.login, textSpan: TextSpan( - text: ' deployed the pull request ' + p.pullRequest.headRef!.name), + text: + ' deployed the pull request ' + p.pullRequest.headRef!.name), ); case 'DeploymentEnvironmentChangedEvent': final p = node as GDeploymentEnvironmentChangedEventParts;