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 RepoHeader extends StatelessWidget { final String avatarUrl; final String avatarLink; final String owner; final String name; final String description; final String homepageUrl; final List actions; final List trailings; RepoHeader({ @required this.avatarUrl, @required this.avatarLink, @required this.owner, @required this.name, @required this.description, this.homepageUrl, this.actions, this.trailings, }); @override Widget build(BuildContext context) { final theme = Provider.of(context); return Container( padding: CommonStyle.padding, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: join(SizedBox(height: 12), [ Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Avatar( url: avatarUrl, size: AvatarSize.small, linkUrl: '/$owner', ), SizedBox(width: 8), Text( '$owner / $name', style: TextStyle( fontSize: 20, color: theme.palette.primary, ), ), ], ), if (actions != null) ...actions, if (description != null && description.isNotEmpty) Text( description, style: TextStyle( color: theme.palette.secondaryText, fontSize: 17, ), ), if (homepageUrl != null && homepageUrl.isNotEmpty) Link( url: homepageUrl, child: Text( homepageUrl, style: TextStyle( color: theme.palette.primary, fontSize: 17, ), ), ), if (trailings != null) ...trailings ]), ), ); } }