import 'package:flutter/material.dart'; 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:provider/provider.dart'; import 'package:git_touch/models/auth.dart'; class GhUserOrganizationScreen extends StatelessWidget { final String login; GhUserOrganizationScreen(this.login); Future> _query( BuildContext context, [int page = 1]) async { final auth = Provider.of(context); final res = await auth.ghClient.getJSON>( '/users/$login/orgs?page=$page', convert: (vs) => [for (var v in vs) GithubUserOrganizationItem.fromJson(v)], ); return ListPayload( cursor: page + 1, items: res, hasMore: res.isNotEmpty, ); } Widget build(BuildContext context) { return ListStatefulScaffold( title: AppBarTitle('Organizations'), onRefresh: () => _query(context), onLoadMore: (cursor) => _query(context, cursor), itemBuilder: (v) { final String login = v.login; return UserOrganizationItem( avatarUrl: v.avatarUrl, login: v.login, url: '/github/$login', description: v.description, ); }, ); } }