From 15ccf72a273d786835c91bf81a6824d93dbda744 Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Sun, 4 Oct 2020 20:37:23 +0800 Subject: [PATCH] build: upgrade provider --- lib/screens/bb_commits.dart | 4 +- lib/screens/bb_explore.dart | 3 +- lib/screens/bb_issues.dart | 4 +- lib/screens/bb_pulls.dart | 4 +- lib/screens/bb_repo.dart | 2 +- lib/screens/bb_teams.dart | 5 +- lib/screens/bb_user.dart | 6 +- lib/screens/gh_commits.dart | 2 +- lib/screens/gh_compare.dart | 8 +-- lib/screens/gh_contributors.dart | 13 +++-- lib/screens/gh_files.dart | 12 ++-- lib/screens/gh_gists.dart | 12 ++-- lib/screens/gh_gists_files.dart | 8 +-- lib/screens/gh_issue.dart | 20 +++---- lib/screens/gh_issue_form.dart | 7 ++- lib/screens/gh_issues.dart | 13 ++--- lib/screens/gh_news.dart | 7 ++- lib/screens/gh_notification.dart | 21 ++++--- lib/screens/gh_object.dart | 6 +- lib/screens/gh_org_repos.dart | 12 ++-- lib/screens/gh_pulls.dart | 13 ++--- lib/screens/gh_repo.dart | 79 ++++++++++++++++----------- lib/screens/gh_repos.dart | 8 +-- lib/screens/gh_search.dart | 3 +- lib/screens/gh_user_organization.dart | 2 +- lib/screens/gh_users.dart | 22 ++++---- lib/screens/gl_blob.dart | 3 +- lib/screens/gl_commit.dart | 2 +- lib/screens/gl_commits.dart | 2 +- lib/screens/gl_explore.dart | 2 +- lib/screens/gl_group.dart | 2 +- lib/screens/gl_groups.dart | 2 +- lib/screens/gl_issue.dart | 10 ++-- lib/screens/gl_issues.dart | 2 +- lib/screens/gl_members.dart | 2 +- lib/screens/gl_merge_requests.dart | 2 +- lib/screens/gl_project.dart | 2 +- lib/screens/gl_project_activity.dart | 2 +- lib/screens/gl_search.dart | 7 ++- lib/screens/gl_starrers.dart | 6 +- lib/screens/gl_todos.dart | 2 +- lib/screens/gl_user.dart | 2 +- lib/screens/gt_commits.dart | 4 +- lib/screens/gt_issues.dart | 3 +- lib/screens/gt_object.dart | 3 +- lib/screens/gt_org.dart | 2 +- lib/screens/gt_orgs.dart | 5 +- lib/screens/gt_repo.dart | 2 +- lib/screens/gt_user.dart | 2 +- lib/screens/login.dart | 5 +- lib/widgets/avatar.dart | 2 +- lib/widgets/comment_item.dart | 5 +- lib/widgets/markdown_view.dart | 12 ++-- lib/widgets/notification_item.dart | 3 +- pubspec.yaml | 2 +- 55 files changed, 216 insertions(+), 180 deletions(-) diff --git a/lib/screens/bb_commits.dart b/lib/screens/bb_commits.dart index d8bb874..d979283 100644 --- a/lib/screens/bb_commits.dart +++ b/lib/screens/bb_commits.dart @@ -14,8 +14,8 @@ class BbCommitsScreen extends StatelessWidget { Future> _query(BuildContext context, [String nextUrl]) async { - final auth = Provider.of(context); - final res = await auth + final res = await context + .read() .fetchBbWithPage(nextUrl ?? '/repositories/$owner/$name/commits/$ref'); return ListPayload( cursor: res.cursor, diff --git a/lib/screens/bb_explore.dart b/lib/screens/bb_explore.dart index 0da63a7..804eed3 100644 --- a/lib/screens/bb_explore.dart +++ b/lib/screens/bb_explore.dart @@ -9,8 +9,7 @@ import 'package:provider/provider.dart'; class BbExploreScreen extends StatelessWidget { Future> _query(BuildContext context, [String nextUrl]) async { - final auth = Provider.of(context); - final res = await auth.fetchBbWithPage( + final res = await context.read().fetchBbWithPage( nextUrl ?? '/repositories?role=member&sort=-updated_on'); return ListPayload( cursor: res.cursor, diff --git a/lib/screens/bb_issues.dart b/lib/screens/bb_issues.dart index 286f3d4..cfe8fa0 100644 --- a/lib/screens/bb_issues.dart +++ b/lib/screens/bb_issues.dart @@ -14,8 +14,8 @@ class BbIssuesScreen extends StatelessWidget { Future> _query(BuildContext context, [String nextUrl]) async { - final auth = Provider.of(context); - final res = await auth + final res = await context + .read() .fetchBbWithPage(nextUrl ?? '/repositories/$owner/$name/issues'); return ListPayload( cursor: res.cursor, diff --git a/lib/screens/bb_pulls.dart b/lib/screens/bb_pulls.dart index c2246dd..ceb46bc 100644 --- a/lib/screens/bb_pulls.dart +++ b/lib/screens/bb_pulls.dart @@ -14,8 +14,8 @@ class BbPullsScreen extends StatelessWidget { Future> _query(BuildContext context, [String nextUrl]) async { - final auth = Provider.of(context); - final res = await auth + final res = await context + .read() .fetchBbWithPage(nextUrl ?? '/repositories/$owner/$name/pullrequests'); return ListPayload( cursor: res.cursor, diff --git a/lib/screens/bb_repo.dart b/lib/screens/bb_repo.dart index 51003d3..c2f243f 100644 --- a/lib/screens/bb_repo.dart +++ b/lib/screens/bb_repo.dart @@ -24,7 +24,7 @@ class BbRepoScreen extends StatelessWidget { return RefreshStatefulScaffold>( title: AppBarTitle('Repository'), fetchData: () async { - final auth = Provider.of(context); + final auth = context.read(); final r = await auth.fetchBbJson('/repositories/$owner/$name'); final repo = BbRepo.fromJson(r); final res = await auth.fetchBb( diff --git a/lib/screens/bb_teams.dart b/lib/screens/bb_teams.dart index f7ef4e1..ce49e8f 100644 --- a/lib/screens/bb_teams.dart +++ b/lib/screens/bb_teams.dart @@ -10,8 +10,9 @@ import 'package:timeago/timeago.dart' as timeago; class BbTeamsScreen extends StatelessWidget { Future> _query(BuildContext context, [String nextUrl]) async { - final auth = Provider.of(context); - final res = await auth.fetchBbWithPage(nextUrl ?? '/teams?role=member'); + final res = await context + .read() + .fetchBbWithPage(nextUrl ?? '/teams?role=member'); return ListPayload( cursor: res.cursor, hasMore: res.hasMore, diff --git a/lib/screens/bb_user.dart b/lib/screens/bb_user.dart index 9ffa8d4..6508e7d 100644 --- a/lib/screens/bb_user.dart +++ b/lib/screens/bb_user.dart @@ -22,7 +22,11 @@ class BbUserScreen extends StatelessWidget { final _accountId = auth.activeAccount.accountId; final _login = login ?? auth.activeAccount.login; return RefreshStatefulScaffold>>( - title: Text(isViewer ? 'Me' : isTeam ? 'Team' : 'User'), + title: Text(isViewer + ? 'Me' + : isTeam + ? 'Team' + : 'User'), fetchData: () async { final res = await Future.wait([ auth.fetchBbJson('/${isTeam ? 'teams' : 'users'}/$_accountId'), diff --git a/lib/screens/gh_commits.dart b/lib/screens/gh_commits.dart index 8216e7b..1506bc6 100644 --- a/lib/screens/gh_commits.dart +++ b/lib/screens/gh_commits.dart @@ -15,7 +15,7 @@ class GhCommitsScreen extends StatelessWidget { Future> _query(BuildContext context, [String cursor]) async { - final res = await Provider.of(context).gqlClient.execute( + final res = await context.read().gqlClient.execute( GhCommitsQuery( variables: GhCommitsArguments( owner: owner, diff --git a/lib/screens/gh_compare.dart b/lib/screens/gh_compare.dart index 2b8f8e2..54523fa 100644 --- a/lib/screens/gh_compare.dart +++ b/lib/screens/gh_compare.dart @@ -19,11 +19,9 @@ class GhComparisonScreen extends StatelessWidget { return RefreshStatefulScaffold( title: AppBarTitle('Files'), fetchData: () async { - final auth = Provider.of(context); - final res = await auth.ghClient.getJSON( - '/repos/$owner/$name/compare/$before...$head', - convert: (vs) => GithubComparisonItem.fromJson(vs), - ); + final res = await context.read().ghClient.getJSON( + '/repos/$owner/$name/compare/$before...$head', + convert: (vs) => GithubComparisonItem.fromJson(vs)); return res.files; }, actionBuilder: (v, _) { diff --git a/lib/screens/gh_contributors.dart b/lib/screens/gh_contributors.dart index 1ebbc3a..2cdb009 100644 --- a/lib/screens/gh_contributors.dart +++ b/lib/screens/gh_contributors.dart @@ -14,11 +14,14 @@ class GhContributorsScreen extends StatelessWidget { Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); - final res = await auth.ghClient.getJSON>( - '/repos/$owner/$name/contributors?page=$page', - convert: (vs) => [for (var v in vs) GithubContributorItem.fromJson(v)], - ); + final res = await context + .read() + .ghClient + .getJSON>( + '/repos/$owner/$name/contributors?page=$page', + convert: (vs) => + [for (var v in vs) GithubContributorItem.fromJson(v)], + ); return ListPayload( cursor: page + 1, items: res, diff --git a/lib/screens/gh_files.dart b/lib/screens/gh_files.dart index 06bcdf8..a3a0ec7 100644 --- a/lib/screens/gh_files.dart +++ b/lib/screens/gh_files.dart @@ -16,11 +16,13 @@ class GhFilesScreen extends StatelessWidget { Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); - final res = await auth.ghClient.getJSON>( - '/repos/$owner/$name/pulls/$pullNumber/files?page=$page', - convert: (vs) => [for (var v in vs) GithubFilesItem.fromJson(v)], - ); + final res = await context + .read() + .ghClient + .getJSON>( + '/repos/$owner/$name/pulls/$pullNumber/files?page=$page', + convert: (vs) => [for (var v in vs) GithubFilesItem.fromJson(v)], + ); return ListPayload( cursor: page + 1, items: res, diff --git a/lib/screens/gh_gists.dart b/lib/screens/gh_gists.dart index 533197c..b4df1c4 100644 --- a/lib/screens/gh_gists.dart +++ b/lib/screens/gh_gists.dart @@ -13,11 +13,13 @@ class GhGistsScreen extends StatelessWidget { Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); - final res = await auth.ghClient.getJSON>( - '/users/$login/gists?page=$page', - convert: (vs) => [for (var v in vs) GithubGistsItem.fromJson(v)], - ); + final res = await context + .read() + .ghClient + .getJSON>( + '/users/$login/gists?page=$page', + convert: (vs) => [for (var v in vs) GithubGistsItem.fromJson(v)], + ); return ListPayload( cursor: page + 1, items: res, diff --git a/lib/screens/gh_gists_files.dart b/lib/screens/gh_gists_files.dart index 8c0d3ed..6b657f1 100644 --- a/lib/screens/gh_gists_files.dart +++ b/lib/screens/gh_gists_files.dart @@ -14,14 +14,12 @@ class GhGistsFilesScreen extends StatelessWidget { @override Widget build(BuildContext context) { - final auth = Provider.of(context); return RefreshStatefulScaffold( title: AppBarTitle('Files'), fetchData: () async { - final data = await auth.ghClient.getJSON( - '/gists/$id', - convert: (vs) => GithubGistsItem.fromJson(vs), - ); + final data = await context.read().ghClient.getJSON( + '/gists/$id', + convert: (vs) => GithubGistsItem.fromJson(vs)); return data; }, bodyBuilder: (payload, _) { diff --git a/lib/screens/gh_issue.dart b/lib/screens/gh_issue.dart index 8705712..833354a 100644 --- a/lib/screens/gh_issue.dart +++ b/lib/screens/gh_issue.dart @@ -407,7 +407,7 @@ __typename } } - var data = await Provider.of(context).query(''' + var data = await context.read().query(''' fragment CommentParts on Comment { id createdAt @@ -467,7 +467,6 @@ fragment ReactableParts on Reactable { @override Widget build(BuildContext context) { - final auth = Provider.of(context); return LongListStatefulScaffold( title: Text(isPullRequest ? 'Pull Request' : 'Issue'), trailingBuilder: (payload, setState) { @@ -479,14 +478,15 @@ fragment ReactableParts on Reactable { ActionItem( text: payload['closed'] ? 'Reopen issue' : 'Close issue', onTap: (_) async { - final res = await auth.gqlClient.execute( - GhOpenIssueQuery( - variables: GhOpenIssueArguments( - id: payload['id'], - open: payload['closed'], - ), - ), - ); + final res = await context + .read() + .gqlClient + .execute(GhOpenIssueQuery( + variables: GhOpenIssueArguments( + id: payload['id'], + open: payload['closed'], + ), + )); setState(() { payload['closed'] = res.data.reopenIssue?.issue?.closed ?? res.data.closeIssue.issue.closed; diff --git a/lib/screens/gh_issue_form.dart b/lib/screens/gh_issue_form.dart index eea5bb2..c91c170 100644 --- a/lib/screens/gh_issue_form.dart +++ b/lib/screens/gh_issue_form.dart @@ -23,7 +23,6 @@ class _GhIssueFormScreenState extends State { @override Widget build(BuildContext context) { final theme = Provider.of(context); - final auth = Provider.of(context); return CommonScaffold( title: Text('Submit an issue'), @@ -58,8 +57,10 @@ class _GhIssueFormScreenState extends State { child: Text('Submit'), onPressed: () async { final slug = RepositorySlug(widget.owner, widget.name); - - final res = await auth.ghClient.issues + final res = await context + .read() + .ghClient + .issues .create(slug, IssueRequest(title: _title, body: _body)); await theme.push( context, diff --git a/lib/screens/gh_issues.dart b/lib/screens/gh_issues.dart index c312fa9..fb7ac7f 100644 --- a/lib/screens/gh_issues.dart +++ b/lib/screens/gh_issues.dart @@ -16,13 +16,12 @@ class GhIssuesScreen extends StatelessWidget { Future> _query(BuildContext context, [String cursor]) async { - final res = - await Provider.of(context).gqlClient.execute(GhIssuesQuery( - variables: GhIssuesArguments( - owner: owner, - name: name, - cursor: cursor, - ))); + final res = await context.read().gqlClient.execute(GhIssuesQuery( + variables: GhIssuesArguments( + owner: owner, + name: name, + cursor: cursor, + ))); final issues = res.data.repository.issues; return ListPayload( cursor: issues.pageInfo.endCursor, diff --git a/lib/screens/gh_news.dart b/lib/screens/gh_news.dart index f163f94..dca2918 100644 --- a/lib/screens/gh_news.dart +++ b/lib/screens/gh_news.dart @@ -21,18 +21,19 @@ class GhNewsScreenState extends State { Future.microtask(() async { // Check if there are unread notification items. // 1 item is enough since count is not displayed for now. - var items = await Provider.of(context) + var items = await context + .read() .ghClient .getJSON('/notifications?per_page=1'); if (items is List && items.isNotEmpty) { - Provider.of(context).setCount(1); + context.read().setCount(1); } }); } Future> fetchEvents([int page = 1]) async { - final auth = Provider.of(context); + final auth = context.read(); final login = auth.activeAccount.login; final events = await auth.ghClient.getJSON( diff --git a/lib/screens/gh_notification.dart b/lib/screens/gh_notification.dart index 482ac1c..5aaf288 100644 --- a/lib/screens/gh_notification.dart +++ b/lib/screens/gh_notification.dart @@ -21,13 +21,13 @@ class GhNotificationScreen extends StatefulWidget { class GhNotificationScreenState extends State { Future> fetchNotifications(int index) async { - final ns = await Provider.of(context).ghClient.getJSON( + final ns = await context.read().ghClient.getJSON( '/notifications?all=${index == 2}&participating=${index == 1}', convert: (vs) => [for (var v in vs) GithubNotificationItem.fromJson(v)], ); if (index == 0) { - Provider.of(context).setCount(ns.length); + context.read().setCount(ns.length); } Map _groupMap = {}; @@ -82,7 +82,7 @@ ${item.key}: pullRequest(number: ${item.subject.number}) { if (schema == '{}') return _groupMap; // Fimber.d(schema); - var data = await Provider.of(context).query(schema); + var data = await context.read().query(schema); _groupMap.forEach((repo, group) { group.items.forEach((item) { var groupData = data[group.key]; @@ -121,9 +121,12 @@ ${item.key}: pullRequest(number: ${item.subject.number}) { ), GestureDetector( onTap: () async { - final auth = Provider.of(context); - await auth.ghClient.activity.markRepositoryNotificationsRead( - RepositorySlug.full(group.fullName)); + await context + .read() + .ghClient + .activity + .markRepositoryNotificationsRead( + RepositorySlug.full(group.fullName)); // await _onSwitchTab(); // TODO: }, child: Icon( @@ -171,10 +174,12 @@ ${item.key}: pullRequest(number: ${item.subject.number}) { actionBuilder: (_, refresh) => ActionEntry( iconData: Icons.done_all, onTap: () async { - var value = await Provider.of(context) + final value = await context + .read() .showConfirm(context, Text('Mark all as read?')); if (value) { - await Provider.of(context) + await context + .read() .ghClient .activity .markNotificationsRead(); diff --git a/lib/screens/gh_object.dart b/lib/screens/gh_object.dart index 4f09d73..45cebf2 100644 --- a/lib/screens/gh_object.dart +++ b/lib/screens/gh_object.dart @@ -34,8 +34,10 @@ class GhObjectScreen extends StatelessWidget { } final suffix = path == null ? '' : '/$path'; - final auth = Provider.of(context); - final res = await auth.ghClient.repositories + final res = await context + .read() + .ghClient + .repositories .getContents(RepositorySlug(owner, name), suffix, ref: ref); if (res.isDirectory) { res.tree.sort((a, b) { diff --git a/lib/screens/gh_org_repos.dart b/lib/screens/gh_org_repos.dart index 9c91279..b185165 100644 --- a/lib/screens/gh_org_repos.dart +++ b/lib/screens/gh_org_repos.dart @@ -18,11 +18,13 @@ class GhOrgReposScreen extends StatelessWidget { Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); - final rs = await auth.ghClient.getJSON>( - '/orgs/$owner/repos?sort=updated&page=$page', - convert: (vs) => [for (var v in vs) Repository.fromJson(v)], - ); + final rs = await context + .read() + .ghClient + .getJSON>( + '/orgs/$owner/repos?sort=updated&page=$page', + convert: (vs) => [for (var v in vs) Repository.fromJson(v)], + ); return ListPayload( cursor: page + 1, items: rs, diff --git a/lib/screens/gh_pulls.dart b/lib/screens/gh_pulls.dart index 1ac2a13..a7ac1ce 100644 --- a/lib/screens/gh_pulls.dart +++ b/lib/screens/gh_pulls.dart @@ -14,13 +14,12 @@ class GhPullsScreen extends StatelessWidget { Future> _query(BuildContext context, [String cursor]) async { - final res = - await Provider.of(context).gqlClient.execute(GhPullsQuery( - variables: GhPullsArguments( - owner: owner, - name: name, - cursor: cursor, - ))); + final res = await context.read().gqlClient.execute(GhPullsQuery( + variables: GhPullsArguments( + owner: owner, + name: name, + cursor: cursor, + ))); final pulls = res.data.repository.pullRequests; return ListPayload( cursor: pulls.pageInfo.endCursor, diff --git a/lib/screens/gh_repo.dart b/lib/screens/gh_repo.dart index e7ec2eb..a4f69c7 100644 --- a/lib/screens/gh_repo.dart +++ b/lib/screens/gh_repo.dart @@ -26,13 +26,12 @@ class GhRepoScreen extends StatelessWidget { GhRepoScreen(this.owner, this.name, {this.branch}); Future _query(BuildContext context) async { - var res = await Provider.of(context).gqlClient.execute( - GhRepoQuery( - variables: GhRepoArguments( - owner: owner, - name: name, - branchSpecified: branch != null, - branch: branch ?? ''))); + var res = await context.read().gqlClient.execute(GhRepoQuery( + variables: GhRepoArguments( + owner: owner, + name: name, + branchSpecified: branch != null, + branch: branch ?? ''))); return res.data.repository; } @@ -50,17 +49,19 @@ class GhRepoScreen extends StatelessWidget { } Future _fetchContributors(BuildContext context) async { - final auth = Provider.of(context); - final res = await auth.ghClient.getJSON( - '/repos/$owner/$name/stats/contributors', - ); + final res = await context + .read() + .ghClient + .getJSON('/repos/$owner/$name/stats/contributors'); return res.length.toString(); } Future _fetchReadme(BuildContext context) async { try { - final auth = Provider.of(context); - final res = await auth.ghClient.repositories + final res = await context + .read() + .ghClient + .repositories .getReadme(RepositorySlug(owner, name)); return res.text; } catch (e) { @@ -72,7 +73,6 @@ class GhRepoScreen extends StatelessWidget { @override Widget build(BuildContext context) { final theme = Provider.of(context); - final auth = Provider.of(context); return RefreshStatefulScaffold>( title: AppBarTitle('Repository'), fetchData: () async { @@ -136,15 +136,19 @@ class GhRepoScreen extends StatelessWidget { switch (v) { case GhRepoSubscriptionState.SUBSCRIBED: case GhRepoSubscriptionState.IGNORED: - final res = await auth.ghClient.activity + final res = await context + .read() + .ghClient + .activity .setRepositorySubscription( - RepositorySlug( - repo.owner.login, repo.name), - subscribed: v == - GhRepoSubscriptionState.SUBSCRIBED, - ignored: - v == GhRepoSubscriptionState.IGNORED, - ); + RepositorySlug( + repo.owner.login, repo.name), + subscribed: v == + GhRepoSubscriptionState + .SUBSCRIBED, + ignored: v == + GhRepoSubscriptionState.IGNORED, + ); setState(() { if (res.subscribed) { repo.viewerSubscription = @@ -156,13 +160,16 @@ class GhRepoScreen extends StatelessWidget { }); break; case GhRepoSubscriptionState.UNSUBSCRIBED: - await auth.ghClient.activity + await context + .read() + .ghClient + .activity .deleteRepositorySubscription( - RepositorySlug( - repo.owner.login, - repo.name, - ), - ); + RepositorySlug( + repo.owner.login, + repo.name, + ), + ); setState(() { repo.viewerSubscription = GhRepoSubscriptionState.UNSUBSCRIBED; @@ -181,11 +188,19 @@ class GhRepoScreen extends StatelessWidget { text: repo.viewerHasStarred ? 'Unstar' : 'Star', onPressed: () async { if (repo.viewerHasStarred) { - await auth.ghClient.activity.unstar( - RepositorySlug(repo.owner.login, repo.name)); + await context + .read() + .ghClient + .activity + .unstar( + RepositorySlug(repo.owner.login, repo.name)); } else { - await auth.ghClient.activity.star( - RepositorySlug(repo.owner.login, repo.name)); + await context + .read() + .ghClient + .activity + .star( + RepositorySlug(repo.owner.login, repo.name)); } setState(() { repo.viewerHasStarred = !repo.viewerHasStarred; diff --git a/lib/screens/gh_repos.dart b/lib/screens/gh_repos.dart index 17ad24b..5cea1db 100644 --- a/lib/screens/gh_repos.dart +++ b/lib/screens/gh_repos.dart @@ -21,10 +21,10 @@ class GhReposScreen extends StatelessWidget { Future> _query(BuildContext context, [String cursor]) async { - final res = await Provider.of(context).gqlClient.execute( - GhReposQuery( - variables: - GhReposArguments(owner: owner, isStar: isStar, after: cursor))); + final auth = context.read(); + final res = await auth.gqlClient.execute(GhReposQuery( + variables: + GhReposArguments(owner: owner, isStar: isStar, after: cursor))); final data = res.data.user; if (isStar) { return ListPayload( diff --git a/lib/screens/gh_search.dart b/lib/screens/gh_search.dart index 9cdbd60..50b8422 100644 --- a/lib/screens/gh_search.dart +++ b/lib/screens/gh_search.dart @@ -46,7 +46,8 @@ class _GhSearchScreenState extends State { _loading = true; }); try { - var data = await Provider.of(context).query(''' + final auth = context.read(); + final data = await auth.query(''' { repository: search(first: $pageSize, type: REPOSITORY, query: "$keyword") { nodes { diff --git a/lib/screens/gh_user_organization.dart b/lib/screens/gh_user_organization.dart index 3f28a93..b45068b 100644 --- a/lib/screens/gh_user_organization.dart +++ b/lib/screens/gh_user_organization.dart @@ -14,7 +14,7 @@ class GhUserOrganizationScreen extends StatelessWidget { Future> _query( BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); + final auth = context.read(); final res = await auth.ghClient.getJSON>( '/users/$login/orgs?page=$page', diff --git a/lib/screens/gh_users.dart b/lib/screens/gh_users.dart index 9b5fbb0..69873c1 100644 --- a/lib/screens/gh_users.dart +++ b/lib/screens/gh_users.dart @@ -42,17 +42,17 @@ class GhUsersScreen extends StatelessWidget { Future> _queryUsers(BuildContext context, [String cursor]) async { - final res = await Provider.of(context).gqlClient.execute( - GhUsersQuery( - variables: GhUsersArguments( - login: login, - repoName: repoName, - isFollowers: type == UsersScreenType.follower, - isFollowing: type == UsersScreenType.following, - isStar: type == UsersScreenType.star, - isWatch: type == UsersScreenType.watch, - isMember: type == UsersScreenType.member, - after: cursor))); + final auth = context.read(); + final res = await auth.gqlClient.execute(GhUsersQuery( + variables: GhUsersArguments( + login: login, + repoName: repoName, + isFollowers: type == UsersScreenType.follower, + isFollowing: type == UsersScreenType.following, + isStar: type == UsersScreenType.star, + isWatch: type == UsersScreenType.watch, + isMember: type == UsersScreenType.member, + after: cursor))); switch (type) { case UsersScreenType.follower: diff --git a/lib/screens/gl_blob.dart b/lib/screens/gl_blob.dart index 36b627b..ebffa28 100644 --- a/lib/screens/gl_blob.dart +++ b/lib/screens/gl_blob.dart @@ -19,7 +19,8 @@ class GlBlobScreen extends StatelessWidget { return RefreshStatefulScaffold( title: AppBarTitle(path ?? ''), fetchData: () async { - final res = await Provider.of(context).fetchGitlab( + final auth = context.read(); + final res = await auth.fetchGitlab( '/projects/$id/repository/files/${path.urlencode}?ref=$ref'); return GitlabBlob.fromJson(res); }, diff --git a/lib/screens/gl_commit.dart b/lib/screens/gl_commit.dart index 67c3060..2d3d0e6 100644 --- a/lib/screens/gl_commit.dart +++ b/lib/screens/gl_commit.dart @@ -17,7 +17,7 @@ class GlCommitScreen extends StatelessWidget { GlCommitScreen(this.id, {this.sha}); Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); + final auth = context.read(); final res = await auth .fetchGitlabWithPage('/projects/$id/repository/commits/$sha/diff'); return (res.data as List).map((v) => GitlabDiff.fromJson(v)).toList(); diff --git a/lib/screens/gl_commits.dart b/lib/screens/gl_commits.dart index b9914db..6c56247 100644 --- a/lib/screens/gl_commits.dart +++ b/lib/screens/gl_commits.dart @@ -14,7 +14,7 @@ class GlCommitsScreen extends StatelessWidget { Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); + final auth = context.read(); final res = await auth .fetchGitlabWithPage('/projects/$id/repository/commits?page=$page'); return ListPayload( diff --git a/lib/screens/gl_explore.dart b/lib/screens/gl_explore.dart index cd037d0..7426724 100644 --- a/lib/screens/gl_explore.dart +++ b/lib/screens/gl_explore.dart @@ -10,7 +10,7 @@ import 'package:timeago/timeago.dart' as timeago; class GlExploreScreen extends StatelessWidget { Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); + final auth = context.read(); final res = await auth .fetchGitlabWithPage('/projects?order_by=last_activity_at&page=$page'); return ListPayload( diff --git a/lib/screens/gl_group.dart b/lib/screens/gl_group.dart index ddaad6c..130c56d 100644 --- a/lib/screens/gl_group.dart +++ b/lib/screens/gl_group.dart @@ -20,7 +20,7 @@ class GlGroupScreen extends StatelessWidget { return RefreshStatefulScaffold>( title: Text('Group'), fetchData: () async { - final auth = Provider.of(context); + final auth = context.read(); final res = await Future.wait([ auth.fetchGitlab('/groups/$id'), auth.fetchGitlabWithPage('/groups/$id/members?per_page=1') diff --git a/lib/screens/gl_groups.dart b/lib/screens/gl_groups.dart index aec76d2..2182f0c 100644 --- a/lib/screens/gl_groups.dart +++ b/lib/screens/gl_groups.dart @@ -9,7 +9,7 @@ import 'package:provider/provider.dart'; class GlGroupsScreenn extends StatelessWidget { Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); + final auth = context.read(); final res = await auth.fetchGitlabWithPage('/groups?page=$page'); return ListPayload( cursor: res.cursor, diff --git a/lib/screens/gl_issue.dart b/lib/screens/gl_issue.dart index 656b00b..e652b2a 100644 --- a/lib/screens/gl_issue.dart +++ b/lib/screens/gl_issue.dart @@ -22,13 +22,11 @@ class GlIssueScreen extends StatelessWidget { title: Text('Issue #$iid'), fetchData: () async { final type = isMr ? 'merge_requests' : 'issues'; + final auth = context.read(); final items = await Future.wait([ - Provider.of(context) - .fetchGitlab('/projects/$projectId/$type/$iid'), - Provider.of(context) - .fetchGitlab('/projects/$projectId/$type/$iid/notes?sort=asc'), - Provider.of(context) - .fetchGitlab('/projects/$projectId/$type/$iid/award_emoji'), + auth.fetchGitlab('/projects/$projectId/$type/$iid'), + auth.fetchGitlab('/projects/$projectId/$type/$iid/notes?sort=asc'), + auth.fetchGitlab('/projects/$projectId/$type/$iid/award_emoji'), ]); return Tuple3( GitlabTodoTarget.fromJson(items[0]), diff --git a/lib/screens/gl_issues.dart b/lib/screens/gl_issues.dart index dffb1b9..d4b4851 100644 --- a/lib/screens/gl_issues.dart +++ b/lib/screens/gl_issues.dart @@ -14,7 +14,7 @@ class GlIssuesScreen extends StatelessWidget { Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); + final auth = context.read(); final res = await auth .fetchGitlabWithPage('/projects/$id/issues?state=opened&page=$page'); return ListPayload( diff --git a/lib/screens/gl_members.dart b/lib/screens/gl_members.dart index 65af1ae..d11a357 100644 --- a/lib/screens/gl_members.dart +++ b/lib/screens/gl_members.dart @@ -13,7 +13,7 @@ class GlMembersScreen extends StatelessWidget { Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); + final auth = context.read(); final res = await auth.fetchGitlabWithPage('/$type/$id/members?page=$page'); return ListPayload( cursor: res.cursor, diff --git a/lib/screens/gl_merge_requests.dart b/lib/screens/gl_merge_requests.dart index bf23aa4..14fb9b5 100644 --- a/lib/screens/gl_merge_requests.dart +++ b/lib/screens/gl_merge_requests.dart @@ -14,7 +14,7 @@ class GlMergeRequestsScreen extends StatelessWidget { Future> _query(BuildContext context, [int page = 1]) async { - final res = await Provider.of(context).fetchGitlabWithPage( + final res = await context.read().fetchGitlabWithPage( '/projects/$id/merge_requests?state=opened&page=$page'); return ListPayload( cursor: res.cursor, diff --git a/lib/screens/gl_project.dart b/lib/screens/gl_project.dart index 66271b5..e2f959b 100644 --- a/lib/screens/gl_project.dart +++ b/lib/screens/gl_project.dart @@ -28,7 +28,7 @@ class GlProjectScreen extends StatelessWidget { int, String>>( title: AppBarTitle('Project'), fetchData: () async { - final auth = Provider.of(context); + final auth = context.read(); final res = await Future.wait([ auth.fetchGitlab('/projects/$id?statistics=1'), auth.fetchGitlab('/projects/$id/languages'), diff --git a/lib/screens/gl_project_activity.dart b/lib/screens/gl_project_activity.dart index 429f086..e1be1f0 100644 --- a/lib/screens/gl_project_activity.dart +++ b/lib/screens/gl_project_activity.dart @@ -16,7 +16,7 @@ class GlProjectActivityScreen extends StatelessWidget { Future> _query(BuildContext context, [int page]) async { - final auth = Provider.of(context); + final auth = context.read(); final vs = await auth.fetchGitlab('/projects/$id/events'); final events = (vs as List).map((v) => GitlabEvent.fromJson(v)).toList(); return ListPayload(cursor: page, items: events, hasMore: false); diff --git a/lib/screens/gl_search.dart b/lib/screens/gl_search.dart index 9023286..ce05441 100644 --- a/lib/screens/gl_search.dart +++ b/lib/screens/gl_search.dart @@ -47,10 +47,11 @@ class _GlSearchScreenState extends State { _loading = true; }); try { - final projects = await Provider.of(context) + final auth = context.read(); + final projects = await auth .fetchGitlabWithPage('/search?scope=projects&search=$keyword'); - final users = await Provider.of(context) - .fetchGitlabWithPage('/search?scope=users&search=$keyword'); + final users = + await auth.fetchGitlabWithPage('/search?scope=users&search=$keyword'); _projects = [for (var v in projects.data) GitlabProject.fromJson(v)]; _users = [for (var v in users.data) GitlabUser.fromJson(v)]; } finally { diff --git a/lib/screens/gl_starrers.dart b/lib/screens/gl_starrers.dart index dcabf49..9127eea 100644 --- a/lib/screens/gl_starrers.dart +++ b/lib/screens/gl_starrers.dart @@ -13,9 +13,9 @@ class GlStarrersScreen extends StatelessWidget { Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); - final res = - await auth.fetchGitlabWithPage('/projects/$id/starrers?page=$page'); + final res = await context + .read() + .fetchGitlabWithPage('/projects/$id/starrers?page=$page'); return ListPayload( cursor: res.cursor, hasMore: res.hasMore, diff --git a/lib/screens/gl_todos.dart b/lib/screens/gl_todos.dart index 51362c3..8acffed 100644 --- a/lib/screens/gl_todos.dart +++ b/lib/screens/gl_todos.dart @@ -64,7 +64,7 @@ class GlTodosScreen extends StatelessWidget { return RefreshStatefulScaffold>( title: Text('Todos'), fetchData: () async { - final vs = await Provider.of(context).fetchGitlab('/todos'); + final vs = await context.read().fetchGitlab('/todos'); return (vs as List).map((v) => GitlabTodo.fromJson(v)); }, bodyBuilder: (data, _) { diff --git a/lib/screens/gl_user.dart b/lib/screens/gl_user.dart index cceaf08..f21ec3a 100644 --- a/lib/screens/gl_user.dart +++ b/lib/screens/gl_user.dart @@ -21,7 +21,7 @@ class GlUserScreen extends StatelessWidget { return RefreshStatefulScaffold>>( title: Text(isViewer ? 'Me' : 'User'), fetchData: () async { - final auth = Provider.of(context); + final auth = context.read(); final _id = id ?? auth.activeAccount.gitlabId; final res = await Future.wait([ auth.fetchGitlab('/users/$_id'), diff --git a/lib/screens/gt_commits.dart b/lib/screens/gt_commits.dart index 17f928d..bd53b2b 100644 --- a/lib/screens/gt_commits.dart +++ b/lib/screens/gt_commits.dart @@ -14,8 +14,8 @@ class GtCommitsScreen extends StatelessWidget { Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); - final res = await auth + final res = await context + .read() .fetchGiteaWithPage('/repos/$owner/$name/commits?page=$page&limit=20'); return ListPayload( cursor: res.cursor, diff --git a/lib/screens/gt_issues.dart b/lib/screens/gt_issues.dart index 71c0e5d..6b41b07 100644 --- a/lib/screens/gt_issues.dart +++ b/lib/screens/gt_issues.dart @@ -14,9 +14,8 @@ class GtIssuesScreen extends StatelessWidget { Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); final type = isPr ? 'pulls' : 'issues'; - final res = await auth.fetchGiteaWithPage( + final res = await context.read().fetchGiteaWithPage( '/repos/$owner/$name/issues?state=open&page=$page&limit=20&type=$type'); return ListPayload( cursor: res.cursor, diff --git a/lib/screens/gt_object.dart b/lib/screens/gt_object.dart index 92f523c..49331f2 100644 --- a/lib/screens/gt_object.dart +++ b/lib/screens/gt_object.dart @@ -21,7 +21,8 @@ class GtObjectScreen extends StatelessWidget { title: AppBarTitle(path ?? 'Files'), fetchData: () async { final suffix = path == null ? '' : '/$path'; - final res = await Provider.of(context) + final res = await context + .read() .fetchGitea('/repos/$owner/$name/contents$suffix'); return res; }, diff --git a/lib/screens/gt_org.dart b/lib/screens/gt_org.dart index c2db548..d940a30 100644 --- a/lib/screens/gt_org.dart +++ b/lib/screens/gt_org.dart @@ -19,7 +19,7 @@ class GtOrgScreen extends StatelessWidget { return RefreshStatefulScaffold>>( title: Text(login), fetchData: () async { - final auth = Provider.of(context); + final auth = context.read(); final res = await Future.wait([ auth.fetchGitea('/orgs/$login'), auth.fetchGitea('/orgs/$login/repos'), diff --git a/lib/screens/gt_orgs.dart b/lib/screens/gt_orgs.dart index 3921e38..f9d60ed 100644 --- a/lib/screens/gt_orgs.dart +++ b/lib/screens/gt_orgs.dart @@ -10,8 +10,9 @@ class GtOrgsScreen extends StatelessWidget { // final String branch; // TODO: Future> _query(BuildContext context, [int page = 1]) async { - final auth = Provider.of(context); - final res = await auth.fetchGiteaWithPage('/orgs?limit=20&page=$page'); + final res = await context + .read() + .fetchGiteaWithPage('/orgs?limit=20&page=$page'); // TODO: https://github.com/go-gitea/gitea/issues/10199 return ListPayload( cursor: page + 1, diff --git a/lib/screens/gt_repo.dart b/lib/screens/gt_repo.dart index e9adbf0..3a37170 100644 --- a/lib/screens/gt_repo.dart +++ b/lib/screens/gt_repo.dart @@ -23,7 +23,7 @@ class GtRepoScreen extends StatelessWidget { return RefreshStatefulScaffold>( title: AppBarTitle('Repository'), fetchData: () async { - final auth = Provider.of(context); + final auth = context.read(); final res = await Future.wait([ auth.fetchGitea('/repos/$owner/$name'), auth.fetchGitea('/repos/$owner/$name/contents/README.md'), diff --git a/lib/screens/gt_user.dart b/lib/screens/gt_user.dart index ca92d0a..c67b880 100644 --- a/lib/screens/gt_user.dart +++ b/lib/screens/gt_user.dart @@ -21,7 +21,7 @@ class GtUserScreen extends StatelessWidget { return RefreshStatefulScaffold>>( title: Text(isViewer ? 'Me' : 'User'), fetchData: () async { - final auth = Provider.of(context); + final auth = context.read(); final res = await Future.wait([ auth.fetchGitea(isViewer ? '/user' : '/users/$login'), auth.fetchGitea(isViewer ? '/user/repos' : '/users/$login/repos'), diff --git a/lib/screens/login.dart b/lib/screens/login.dart index 4353ea0..2064835 100644 --- a/lib/screens/login.dart +++ b/lib/screens/login.dart @@ -127,8 +127,9 @@ class _LoginScreenState extends State { } void showError(err) { - final theme = Provider.of(context); - theme.showConfirm(context, Text('Something bad happens: $err')); + context + .read() + .showConfirm(context, Text('Something bad happens: $err')); } @override diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index 466dcc4..f7153c1 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -44,7 +44,7 @@ class Avatar extends StatelessWidget { return Link( child: widget, onTap: () { - Provider.of(context).push(context, linkUrl); + context.read().push(context, linkUrl); }, ); } diff --git a/lib/widgets/comment_item.dart b/lib/widgets/comment_item.dart index 9485b4a..b9c8cc6 100644 --- a/lib/widgets/comment_item.dart +++ b/lib/widgets/comment_item.dart @@ -41,7 +41,7 @@ class _GhEmojiActionState extends State { var operation = isRemove ? 'remove' : 'add'; try { - await Provider.of(context).query(''' + await context.read().query(''' mutation { ${operation}Reaction(input: {subjectId: "$id", content: $emojiKey}) { clientMutationId @@ -53,8 +53,7 @@ mutation { payload[emojiKey]['viewerHasReacted'] = !isRemove; }); } catch (e) { - final theme = Provider.of(context); - theme.showWarning(context, e); + context.read().showWarning(context, e); } } diff --git a/lib/widgets/markdown_view.dart b/lib/widgets/markdown_view.dart index 95dab53..0978732 100644 --- a/lib/widgets/markdown_view.dart +++ b/lib/widgets/markdown_view.dart @@ -29,6 +29,8 @@ class MarkdownView extends StatelessWidget { return MarkdownBody( onTapLink: (url) { + final theme = context.read(); + if (basePaths != null && !url.startsWith('https://') && !url.startsWith('http://')) { @@ -38,7 +40,7 @@ class MarkdownView extends StatelessWidget { var y = path.join(x, url); if (y.startsWith('/')) y = y.substring(1); - return Provider.of(context).push(context, + return theme.push(context, '/${basePaths[0]}/${basePaths[1]}/${basePaths[2]}?path=${y.urlencode}'); } @@ -48,22 +50,22 @@ class MarkdownView extends StatelessWidget { m = matchPattern(url, '/{owner}/{name}/pull/{number}'); if (m != null) { - return Provider.of(context).push(context, url); + return theme.push(context, url); } m = matchPattern(url, '/{owner}/{name}/issues/{number}'); if (m != null) { - return Provider.of(context).push(context, url); + return theme.push(context, url); } m = matchPattern(url, '/{owner}/{name}'); if (m != null) { - return Provider.of(context).push(context, url); + return theme.push(context, url); } m = matchPattern(url, '/{login}'); if (m != null) { - return Provider.of(context).push(context, url); + return theme.push(context, url); } } diff --git a/lib/widgets/notification_item.dart b/lib/widgets/notification_item.dart index dc68832..6cdd0fb 100644 --- a/lib/widgets/notification_item.dart +++ b/lib/widgets/notification_item.dart @@ -83,7 +83,8 @@ class _NotificationItemState extends State { loading = true; }); try { - await Provider.of(context) + await context + .read() .ghClient .activity .markThreadRead(payload.id); diff --git a/pubspec.yaml b/pubspec.yaml index 635b267..a038398 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,7 +30,7 @@ dependencies: flutter_svg: ^0.19.0 launch_review: ^2.0.0 timeago: ^2.0.18 - provider: ^3.2.0 + provider: ^4.3.2 filesize: ^1.0.4 tuple: ^1.0.2 uri: ^0.11.3