From 2d9610170b9875a54c047ae5350bab30b49b42eb Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Sun, 4 Oct 2020 21:42:54 +0800 Subject: [PATCH] fix(gh): orgs screen description null --- lib/router.dart | 2 +- lib/scaffolds/list_stateful.dart | 9 +-- ...gh_user_organization.dart => gh_orgs.dart} | 23 +++--- lib/widgets/user_item.dart | 5 +- lib/widgets/user_organizations.dart | 72 ------------------- 5 files changed, 19 insertions(+), 92 deletions(-) rename lib/screens/{gh_user_organization.dart => gh_orgs.dart} (68%) delete mode 100644 lib/widgets/user_organizations.dart diff --git a/lib/router.dart b/lib/router.dart index 8d48d39..03a4088 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -41,7 +41,7 @@ import 'package:git_touch/screens/gh_repo.dart'; import 'package:git_touch/screens/settings.dart'; import 'package:git_touch/screens/gh_user.dart'; import 'package:git_touch/screens/gh_users.dart'; -import 'package:git_touch/screens/gh_user_organization.dart'; +import 'package:git_touch/screens/gh_orgs.dart'; import 'package:git_touch/screens/gh_gists.dart'; import 'package:git_touch/screens/gh_gist_object.dart'; import 'package:git_touch/screens/gh_compare.dart'; diff --git a/lib/scaffolds/list_stateful.dart b/lib/scaffolds/list_stateful.dart index d532a6f..d3e32e2 100644 --- a/lib/scaffolds/list_stateful.dart +++ b/lib/scaffolds/list_stateful.dart @@ -78,12 +78,13 @@ class _ListStatefulScaffoldState } } - // FIXME: if items not enough, fetch next page + // if items not enough, fetch next page // This should be triggered after build + // TODO: disabled void _makeSureItemsFill() { - Future.delayed(Duration(milliseconds: 300)).then((_) { - onScroll(); - }); + // Future.delayed(Duration(milliseconds: 300)).then((_) { + // onScroll(); + // }); } Future _refresh({bool force = false}) async { diff --git a/lib/screens/gh_user_organization.dart b/lib/screens/gh_orgs.dart similarity index 68% rename from lib/screens/gh_user_organization.dart rename to lib/screens/gh_orgs.dart index b45068b..8fe74ac 100644 --- a/lib/screens/gh_user_organization.dart +++ b/lib/screens/gh_orgs.dart @@ -3,7 +3,7 @@ import 'package:flutter/cupertino.dart'; import 'package:git_touch/models/github.dart'; import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/widgets/app_bar_title.dart'; -import 'package:git_touch/widgets/user_organizations.dart'; +import 'package:git_touch/widgets/user_item.dart'; import 'package:provider/provider.dart'; import 'package:git_touch/models/auth.dart'; @@ -14,13 +14,14 @@ class GhUserOrganizationScreen extends StatelessWidget { Future> _query( BuildContext context, [int page = 1]) async { - final auth = context.read(); - final res = - await auth.ghClient.getJSON>( - '/users/$login/orgs?page=$page', - convert: (vs) => - [for (var v in vs) GithubUserOrganizationItem.fromJson(v)], - ); + final res = await context + .read() + .ghClient + .getJSON>( + '/users/$login/orgs?page=$page', + convert: (vs) => + [for (var v in vs) GithubUserOrganizationItem.fromJson(v)], + ); return ListPayload( cursor: page + 1, items: res, @@ -34,12 +35,10 @@ class GhUserOrganizationScreen extends StatelessWidget { onRefresh: () => _query(context), onLoadMore: (cursor) => _query(context, cursor), itemBuilder: (v) { - final String login = v.login; - return UserOrganizationItem( + return UserItem.gh( avatarUrl: v.avatarUrl, login: v.login, - url: '/github/$login', - description: v.description, + bio: v.description == null ? null : Text(v.description), ); }, ); diff --git a/lib/widgets/user_item.dart b/lib/widgets/user_item.dart index 0cd40c8..2ac3fa9 100644 --- a/lib/widgets/user_item.dart +++ b/lib/widgets/user_item.dart @@ -20,15 +20,14 @@ class UserItem extends StatelessWidget { final String url; UserItem.gh({ - @required this.login, - // @required this.name, @required this.avatarUrl, + @required this.login, @required this.bio, }) : url = '/github/$login'; UserItem({ - @required this.login, @required this.avatarUrl, + @required this.login, @required this.bio, @required this.url, }); diff --git a/lib/widgets/user_organizations.dart b/lib/widgets/user_organizations.dart deleted file mode 100644 index 8c6410d..0000000 --- a/lib/widgets/user_organizations.dart +++ /dev/null @@ -1,72 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:git_touch/models/theme.dart'; -import 'package:git_touch/utils/utils.dart'; -import 'package:git_touch/widgets/avatar.dart'; -import 'package:git_touch/widgets/link.dart'; -import 'package:provider/provider.dart'; - -class UserOrganizationItem extends StatelessWidget { - final String login; - final String avatarUrl; - final String url; - final String description; - - UserOrganizationItem({ - @required this.login, - @required this.avatarUrl, - @required this.url, - @required this.description, - }); - - @override - Widget build(BuildContext context) { - final theme = Provider.of(context); - return Link( - url: url, - child: Container( - padding: CommonStyle.padding, - child: Row( - children: [ - Avatar(url: avatarUrl, size: AvatarSize.large), - SizedBox(width: 10), - Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - Text( - login, - style: TextStyle( - color: theme.palette.primary, - fontSize: 18, - fontWeight: FontWeight.w600, - ), - ), - ], - ), - SizedBox(height: 6), - Row( - children: [ - Expanded( - child: Text( - description, - style: TextStyle( - color: theme.palette.secondaryText, - fontSize: 16, - ), - overflow: TextOverflow.visible, - ), - ) - ], - ), - ], - ), - ) - ], - ), - ), - ); - } -}