import 'package:comunic/enums/post_target.dart'; import 'package:comunic/helpers/posts_helper.dart'; import 'package:comunic/models/advanced_user_info.dart'; import 'package:comunic/ui/widgets/account_image_widget.dart'; import 'package:comunic/ui/widgets/like_widget.dart'; import 'package:comunic/ui/widgets/post_create_form_widget.dart'; import 'package:comunic/ui/widgets/posts_list_widget.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; /// Tablet mode of user page /// /// @author Pierre HUBERT class UserPageTablet extends StatefulWidget { final AdvancedUserInfo userInfo; final void Function() onNeedRefresh; const UserPageTablet({ Key key, @required this.userInfo, @required this.onNeedRefresh, }) : assert(userInfo != null), assert(onNeedRefresh != null), super(key: key); @override _UserPageTabletState createState() => _UserPageTabletState(); } class _UserPageTabletState extends State { AdvancedUserInfo get _userInfo => widget.userInfo; @override Widget build(BuildContext context) => Flex( direction: Axis.horizontal, crossAxisAlignment: CrossAxisAlignment.start, children: [ _buildLeftColumn(), Expanded(child: _buildRightColumn()) ], ); Widget _buildLeftColumn() => Column( children: [ _buildMainCard(), _buildAboutCard(), ], ); Widget _buildRightColumn() => PostsListWidget( disablePullToRefresh: true, topWidgets: [ _userInfo.canPostTexts ? PostCreateFormWidget( postTarget: PostTarget.USER_PAGE, targetID: _userInfo.id, onCreated: widget.onNeedRefresh, ) : Container() ], getPostsList: () => PostsHelper().getUserPosts(_userInfo.id), getOlder: (from) => PostsHelper().getUserPosts(_userInfo.id, from: from), showPostsTarget: false, ); /// Main user information card Widget _buildMainCard() => ConstrainedBox( constraints: BoxConstraints(maxWidth: 200), child: Card( child: Padding( padding: const EdgeInsets.all(8.0), child: Column( children: [ Center(child: AccountImageWidget(user: _userInfo, width: 75)), _MainCardSpacer(), Text( _userInfo.displayName, textAlign: TextAlign.center, style: TextStyle(fontSize: 20), ), _MainCardSpacer(), Container( child: _userInfo.hasVirtualDirectory ? Text("@${_userInfo.virtualDirectory}") : null), _MainCardSpacer(visible: _userInfo.hasVirtualDirectory), LikeWidget(likeElement: _userInfo), ], ), ), ), ); /// Build user information card Widget _buildAboutCard() => Container(); } class _MainCardSpacer extends StatelessWidget { final bool visible; const _MainCardSpacer({this.visible = true, Key key}) : assert(visible != null), super(key: key); @override Widget build(BuildContext context) => visible ? SizedBox(height: 10) : Container(); }