1
0
mirror of https://github.com/git-touch/git-touch synced 2025-02-23 14:57:42 +01:00

fix(gh): orgs screen description null

This commit is contained in:
Rongjian Zhang 2020-10-04 21:42:54 +08:00
parent 5101b2554f
commit 2d9610170b
5 changed files with 19 additions and 92 deletions

View File

@ -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';

View File

@ -78,12 +78,13 @@ class _ListStatefulScaffoldState<T, K>
}
}
// 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<void> _refresh({bool force = false}) async {

View File

@ -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<ListPayload<GithubUserOrganizationItem, int>> _query(
BuildContext context,
[int page = 1]) async {
final auth = context.read<AuthModel>();
final res =
await auth.ghClient.getJSON<List, List<GithubUserOrganizationItem>>(
'/users/$login/orgs?page=$page',
convert: (vs) =>
[for (var v in vs) GithubUserOrganizationItem.fromJson(v)],
);
final res = await context
.read<AuthModel>()
.ghClient
.getJSON<List, List<GithubUserOrganizationItem>>(
'/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),
);
},
);

View File

@ -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,
});

View File

@ -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<ThemeModel>(context);
return Link(
url: url,
child: Container(
padding: CommonStyle.padding,
child: Row(
children: <Widget>[
Avatar(url: avatarUrl, size: AvatarSize.large),
SizedBox(width: 10),
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
Text(
login,
style: TextStyle(
color: theme.palette.primary,
fontSize: 18,
fontWeight: FontWeight.w600,
),
),
],
),
SizedBox(height: 6),
Row(
children: <Widget>[
Expanded(
child: Text(
description,
style: TextStyle(
color: theme.palette.secondaryText,
fontSize: 16,
),
overflow: TextOverflow.visible,
),
)
],
),
],
),
)
],
),
),
);
}
}