mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-03 19:54:12 +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),
 | 
					                child: AccountImageWidget(user: user),
 | 
				
			||||||
              ),
 | 
					              ),
 | 
				
			||||||
              Expanded(flex: 1, child: Text(" ${user.displayName}")),
 | 
					              Expanded(flex: 1, child: Text(" ${user.displayName}")),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              // Private conversation
 | 
				
			||||||
              user.id == userID()
 | 
					              user.id == userID()
 | 
				
			||||||
                  ? Container()
 | 
					                  ? Container()
 | 
				
			||||||
                  : IconButton(
 | 
					                  : IconButton(
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
import 'package:comunic/models/advanced_user_info.dart';
 | 
					import 'package:comunic/models/advanced_user_info.dart';
 | 
				
			||||||
import 'package:comunic/ui/screens/friends_list_screen.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/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_page_header.dart';
 | 
				
			||||||
import 'package:comunic/ui/screens/user_page_sections/user_posts_section.dart';
 | 
					import 'package:comunic/ui/screens/user_page_sections/user_posts_section.dart';
 | 
				
			||||||
import 'package:comunic/utils/intl_utils.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
 | 
					        // User friends
 | 
				
			||||||
        UserPageTab(
 | 
					        UserPageTab(
 | 
				
			||||||
            label: tr("Friends"),
 | 
					            label: tr("Friends"),
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user