mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-10-31 18:24:23 +00:00 
			
		
		
		
	Start to create about page
This commit is contained in:
		
							
								
								
									
										87
									
								
								lib/ui/screens/user_page_sections/about_user_section.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								lib/ui/screens/user_page_sections/about_user_section.dart
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,87 @@ | ||||
| import 'package:comunic/enums/user_page_visibility.dart'; | ||||
| import 'package:comunic/models/advanced_user_info.dart'; | ||||
| import 'package:comunic/models/displayed_content.dart'; | ||||
| import 'package:comunic/ui/widgets/text_widget.dart'; | ||||
| import 'package:comunic/utils/date_utils.dart'; | ||||
| import 'package:comunic/utils/intl_utils.dart'; | ||||
| /// About current user | ||||
| /// | ||||
| /// @author Pierre Hubert | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:url_launcher/url_launcher.dart'; | ||||
|  | ||||
| class AboutUserSection extends StatefulWidget { | ||||
|   final AdvancedUserInfo user; | ||||
|  | ||||
|   const AboutUserSection({ | ||||
|     Key key, | ||||
|     @required this.user, | ||||
|   })  : assert(user != null), | ||||
|         super(key: key); | ||||
|  | ||||
|   @override | ||||
|   _AboutUserSectionState createState() => _AboutUserSectionState(); | ||||
| } | ||||
|  | ||||
| class _AboutUserSectionState extends State<AboutUserSection> { | ||||
|   @override | ||||
|   Widget build(BuildContext context) => ListView( | ||||
|         children: [ | ||||
|           // Account URL | ||||
|           widget.user.hasPersonalWebsite | ||||
|               ? ListTile( | ||||
|                   leading: Icon(Icons.link), | ||||
|                   title: Text(tr("Personal Website")), | ||||
|                   subtitle: Text(widget.user.personalWebsite), | ||||
|                   onTap: () => launch(widget.user.personalWebsite), | ||||
|                 ) | ||||
|               : Container(), | ||||
|  | ||||
|           // Account note | ||||
|           widget.user.hasPublicNote | ||||
|               ? ListTile( | ||||
|                   leading: Icon(Icons.note), | ||||
|                   title: Text(tr("Note")), | ||||
|                   subtitle: TextWidget( | ||||
|                       content: DisplayedString(widget.user.publicNote)), | ||||
|                 ) | ||||
|               : Container(), | ||||
|  | ||||
|           // Virtual directory | ||||
|           widget.user.hasVirtualDirectory | ||||
|               ? ListTile( | ||||
|                   leading: Icon(Icons.alternate_email), | ||||
|                   title: Text(tr("Virtual directory")), | ||||
|                   subtitle: Text("@${widget.user.virtualDirectory}")) | ||||
|               : Container(), | ||||
|  | ||||
|           // Number of friends | ||||
|           widget.user.isFriendsListPublic | ||||
|               ? ListTile( | ||||
|                   leading: Icon(Icons.group), | ||||
|                   title: Text(tr("Number of friends")), | ||||
|                   subtitle: Text(widget.user.numberFriends.toString()), | ||||
|                 ) | ||||
|               : Container(), | ||||
|  | ||||
|           // Member for | ||||
|           ListTile( | ||||
|             leading: Icon(Icons.access_time_rounded), | ||||
|             title: Text(tr("Member for")), | ||||
|             subtitle: | ||||
|                 Text(diffTimeFromNowToStr(widget.user.accountCreationTime)), | ||||
|           ), | ||||
|  | ||||
|           // Account visibility | ||||
|           ListTile( | ||||
|             leading: Icon(Icons.remove_red_eye), | ||||
|             title: Text(tr("Account visibility")), | ||||
|             subtitle: Text(widget.user.pageVisibility == UserPageVisibility.OPEN | ||||
|                 ? tr("Open page") | ||||
|                 : (widget.user.pageVisibility == UserPageVisibility.PUBLIC | ||||
|                     ? tr("Public page") | ||||
|                     : tr("Private page"))), | ||||
|           ), | ||||
|         ], | ||||
|       ); | ||||
| } | ||||
| @@ -32,6 +32,8 @@ class UserPageHeader extends StatelessWidget { | ||||
|                 child: AccountImageWidget(user: user), | ||||
|               ), | ||||
|               Expanded(flex: 1, child: Text(" ${user.displayName}")), | ||||
|  | ||||
|               // Private conversation | ||||
|               user.id == userID() | ||||
|                   ? Container() | ||||
|                   : IconButton( | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| import 'package:comunic/models/advanced_user_info.dart'; | ||||
| import 'package:comunic/ui/screens/friends_list_screen.dart'; | ||||
| import 'package:comunic/ui/screens/other_friends_lists_screen.dart'; | ||||
| import 'package:comunic/ui/screens/user_page_sections/about_user_section.dart'; | ||||
| import 'package:comunic/ui/screens/user_page_sections/user_page_header.dart'; | ||||
| import 'package:comunic/ui/screens/user_page_sections/user_posts_section.dart'; | ||||
| import 'package:comunic/utils/intl_utils.dart'; | ||||
| @@ -39,6 +40,12 @@ class _UserMobilePageState extends State<UserMobilePage> | ||||
|           ), | ||||
|         ), | ||||
|  | ||||
|         // About user | ||||
|         UserPageTab( | ||||
|           label: tr("About"), | ||||
|           onBuild: (c) => AboutUserSection(user: widget.userInfo), | ||||
|         ), | ||||
|  | ||||
|         // User friends | ||||
|         UserPageTab( | ||||
|             label: tr("Friends"), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user