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),
 | 
			
		||||
              ),
 | 
			
		||||
              Expanded(flex: 1, child: Text(" ${user.displayName}")),
 | 
			
		||||
 | 
			
		||||
              // Private conversation
 | 
			
		||||
              user.id == userID()
 | 
			
		||||
                  ? Container()
 | 
			
		||||
                  : IconButton(
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user