import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:git_touch/graphql/github.data.gql.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/markdown_view.dart'; import 'package:git_touch/widgets/table_view.dart'; import 'package:provider/provider.dart'; import 'package:timeago/timeago.dart' as timeago; class ReleaseItem extends StatelessWidget { final String login; final DateTime publishedAt; final String name; final String avatarUrl; final String tagName; final String description; final GReleasesData_repository_releases_nodes_releaseAssets releaseAssets; ReleaseItem( {@required this.login, @required this.publishedAt, @required this.name, @required this.tagName, @required this.avatarUrl, @required this.description, this.releaseAssets}); @override Widget build(BuildContext context) { final theme = Provider.of(context); return Column( children: [ SizedBox( height: 12, ), Row(children: [ Avatar(url: avatarUrl, size: AvatarSize.large), SizedBox(width: 10), Expanded( child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Text( tagName, style: TextStyle( color: theme.palette.primary, fontSize: 18, fontWeight: FontWeight.w600, ), ), ], ), SizedBox(height: 6), DefaultTextStyle( style: TextStyle( color: theme.palette.secondaryText, fontSize: 16, ), child: Text(login + " released " + timeago.format(publishedAt)), ), ], ), ), ]), if (description != null && description.isNotEmpty) ...[ MarkdownFlutterView( description, ), SizedBox(height: 10), ], Card( color: theme.palette.grayBackground, margin: EdgeInsets.all(0), child: ExpansionTile( title: Text( 'Assets (' + (releaseAssets?.nodes?.length ?? 0).toString() + ')', style: TextStyle( color: theme.palette.secondaryText, fontSize: 18, fontWeight: FontWeight.w600, ), ), children: [ TableView(items: [ if (releaseAssets != null) for (var asset in releaseAssets.nodes) TableViewItem( text: Text( asset.name, style: TextStyle( color: theme.palette.primary, fontSize: 14, fontWeight: FontWeight.w400, ), ), rightWidget: IconButton( onPressed: () { if (asset.downloadUrl != null) { theme.push(context, asset.downloadUrl); } }, icon: Icon(Ionicons.download_outline)), hideRightChevron: true, ), ]) ], ), ) ], ); } }